[問題] regular expression 的表達式

看板java作者 (渥德匹斯)時間16年前 (2009/06/24 03:47), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
最近期末有一個關於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
文章代碼(AID): #1AGJ5DzC (java)