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

看板RegExp (正規表示式 Regular Expression)作者 (godspeed lee)時間14年前 (2011/03/09 10:46), 編輯推噓2(2013)
留言15則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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\) -- http://godspeedlee.myweb.hinet.net/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 192.251.226.206

03/09 18:55, , 1F
感謝你 不過還沒試出來@~@a
03/09 18:55, 1F

03/09 23:30, , 2F
$numN = count($outputN[0]); 改成
03/09 23:30, 2F

03/09 23:30, , 3F
$numN = count($outputN);
03/09 23:30, 3F

03/09 23:31, , 4F
preg_match_all('/([\x{4e00}-\x{9fff}]+)\(N\)/u'...
03/09 23:31, 4F

03/09 23:31, , 5F
請用以上的方式
03/09 23:31, 5F

03/09 23:32, , 6F
/u 代表 UNICODE
03/09 23:32, 6F

03/10 21:25, , 7F
謝謝~ 不過照這樣做 他出現了下面的錯誤
03/10 21:25, 7F

03/10 21:26, , 8F
Compilation failed: character value in \x{...}
03/10 21:26, 8F

03/10 21:26, , 9F
sequence is too large at offset 10
03/10 21:26, 9F

03/10 21:26, , 10F
謝謝你
03/10 21:26, 10F

03/10 22:21, , 11F
我用 5.3.5 ok,你要不要先用這個版本試試看?
03/10 22:21, 11F

03/10 22:21, , 12F
PHP 5.3.5
03/10 22:21, 12F

03/10 22:32, , 13F
5.2.3 也實驗過沒問題
03/10 22:32, 13F

03/10 22:52, , 14F
我找到原因了 就是正規表式我多打了一組" "
03/10 22:52, 14F

03/10 22:53, , 15F
非常感謝godspeedlee大幫忙 這個錯也提供給後人警惕
03/10 22:53, 15F
文章代碼(AID): #1DTkdm3O (RegExp)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1DTkdm3O (RegExp)