我有一些文檔存儲爲大型字符串。在字符串中,我有一些內嵌的XML標記,我想知道標記之間的單詞。這些文檔也可能包含HTML標籤,因爲這些文檔通常是網站。Java:RegEx問題(使用'。'所有字符符號)
實例文檔:
「< TR>我的名字是< B> < PERSON>鮑比< /人> </b>中,我住在美國」
當前正則表達式:
Pattern p = Pattern.compile("<(LOCATION|PERSON|ORGANIZATION)>[\\w[ '\"/\\!%$\\(\\)\\-\\+]]*</(LOCATION|PERSON|ORGANIZATION)>");
Matcher m = p.matcher("I'm <PERSON>Graham Brown</PERSON> I went to the <LOCATION>USA'S</LOCATION>");
while(m.find()){
System.out.println(m.group());
}
結果= < PERSON>鮑比< /人> <位置>美國< /位置>
這正常工作與幾乎大多數標點符號和語法,但正則表達式應該允許在標籤之間找到任何字符模式。當我嘗試使用'。'時(任何字符),如下所示,它返回整個字符串。
「< TR>我的名字是< B> < PERSON>鮑比< /人> </b>中,我住在美國。」
Pattern p = Pattern.compile("<(LOCATION|PERSON|ORGANIZATION)>.</(LOCATION|PERSON|ORGANIZATION)>");
如何返回角openinng和結束標記之間的任何字符?
編輯:感謝您的回覆。只是爲了幫助得到正確的答案。 澄清我已經使用NER標記了命名實體。如果您不清楚這是什麼,請參閱我在底部引用的一些論文。
我感興趣的是獲取三個開始和結束標記之間的文本。沒有其他標籤,文檔不是XML文件,我不解析所有的HTML標籤,也不是我對它們感興趣。我所感興趣的是解析我創建的XML標籤,因此儘管RegEx是最簡單的方法。
論文稍後添加...
親愛的上帝,你爲什麼不使用某種類型的XML解析器?那個正則表達式是純粹的* evil *。 – abyx 2009-11-26 09:50:47
用正則表達式解析HTML?這是一個壞主意 – 2009-11-26 09:50:48
你一定看到這個:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – vahidg 2009-11-26 09:54:52