[問題] regular expression 的表達式
最近期末有一個關於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