Re: [問題] 取(xx前的字

作者: godspeedlee (妳,我可以)   2011-03-09 10:46:04
※ 引述《intangible (~*)》之銘言:
: 各位好
: 想請教一正規表式問題
: 有一個字串他長
: 質詢(Vt) 進入(Vt) 第二(DET) 天(M) ,(COMMACATEGORY) 民進黨(N) 議員(N) 
: 就(ADV)
: 我想擷取出裡面所有(N)前面的詞
: 我是使用PHP
: 我寫
: preg_match_all("/(.*)\(N/",$ckvalue,$outputN);
: $numN = count($outputN[0]);
: for($valueN=0;$valueN<$numN;$valueN++) {
: echo $outputN[1][$valueN]."\n";
: }
: 他會變成輸出
: 前面的字都有到議員兩個字停止
: 只過濾掉最後一個(N)
: 請問我的正規表式應該如何修改才能過濾出所有的(N)前的詞呢?
: 感謝你們
假設你的資料用 BIG5 編碼:
((?:[\xA1-\xF9][\x40-\xF0])+)\(N\)
不過現在 BIG5 已經式微,我猜你的資料應該是用 UNICODE
([\x{4e00}-\x{9fff}]+)\(N\)
作者: intangible (結束)   2011-03-09 18:55:00
感謝你 不過還沒試出來@~@a
作者: godspeedlee (妳,我可以)   2011-03-09 23:30:00
$numN = count($outputN[0]); 改成$numN = count($outputN);preg_match_all('/([\x{4e00}-\x{9fff}]+)\(N\)/u'...請用以上的方式/u 代表 UNICODE
作者: intangible (結束)   2011-03-10 21:25:00
謝謝~ 不過照這樣做 他出現了下面的錯誤Compilation failed: character value in \x{...}sequence is too large at offset 10謝謝你
作者: godspeedlee (妳,我可以)   2011-03-10 22:21:00
我用 5.3.5 ok,你要不要先用這個版本試試看?PHP 5.3.55.2.3 也實驗過沒問題
作者: intangible (結束)   2011-03-10 22:52:00
我找到原因了 就是正規表式我多打了一組" "非常感謝godspeedlee大幫忙 這個錯也提供給後人警惕

Links booklink

Contact Us: admin [ a t ] ucptt.com