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