作者pacifistboy (渥德匹斯)
看板java
标题[问题] regular expression 的表达式
时间Wed Jun 24 03:47:23 2009
最近期末有一个关於information retrieval的project
我们其中有一个step是把query拿去做tokenization
用的是别人写好的api
tokenize的结果会像下面这个样子:
原文: how to erase scar?
result:<token pos="wql">how</token> <token pos="to">to</token>
<token pos="vb">erase</token> <token pos="nn">scar</token>
<token pos=".">?</token>
上面全部是一整行
" " 里面的是词性之类的标示,然後那个term会在<token> 及</token>之间
现在我想要把词性是名词的term印出来
我想的方法是用 <token pos="XX">YYYY</token> 这样的表示方法把每个元素抓出来
然後再去看XX部份是不是名词,是的话就把YYYY印出
我想了很久,现在写出来的regular expression是
Pattern p =
Pattern.compile("
<token.pos=\"([a-zA-Z]{1,4})\">(.*{1,20})</token>");
可是看起来好像不太对
想请问有经验的大大,该怎样修改才可以正确达成我想parse的目标
另外,因为我需要取得XX(\1)及YYYY(\2);
可是我一次输入是一整行,可能有好几组都符合那个Pattern
我目前是这样写
String[] result = p.split(输入的那行文字);
这样好像没办法取到每一个的XX及YYYY耶
请问有比较好的方法吗?
我比较少用这部份,不是很熟 >"<
谢谢m(_ _)m
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.230.39