我有一个字符串名称,
String s = "<NOUN>Sam</NOUN> , a student of the University of oxford , won the Ethugalpura International Rating Chess Tournament which concluded on Dec.22 at the Blue Olympiad Hotel";
我想删除所有&lt; NOUN &gt;和&lt; / NOUN &gt;来自字符串的标签。我用它来删除标签,
s.replaceAll("[<NOUN>,</NOUN>]","");
是的,它删除了标签。 但它也会从字符串中删除字母'U'和'O'字符,这会给我以下输出。
Sam , a student of the niversity of oxford , won the Ethugalpura International Rating Chess Tournament which concluded on Dec.22 at the Blue lympiad Hotel
任何人都可以告诉我如何正确地做到这一点?
答案 0 :(得分:13)
尝试:
s.replaceAll("<NOUN>|</NOUN>", "");
在RegEx中,语法[...]
将匹配括号内的每个字符,无论它们出现的顺序如何。因此,在您的示例中,所有外观均为“&lt;”, “N”,“O”等被删除。而是使用管道(|
)来匹配“&lt; NOUN&gt;”和“&lt; / NOUN&gt;”。
以下内容也应该有效(并且可以被认为更干燥和优雅),因为无论是否使用正斜杠,它都会匹配标记:
s.replaceAll("</?NOUN>", "");
答案 1 :(得分:2)
String.replaceAll()将正则表达式作为其第一个参数。正则表达式:
"[<NOUN>,</NOUN>]"
在括号中定义要识别并因此删除的字符集。因此,您要求删除字符<
,>
,/
,N
,O
,U
和逗号。
也许最简单的方法可以做你想做的事情:
s.replaceAll("<NOUN>","").replaceAll("</NOUN>","");
明确表示它正在删除。显然可能有更复杂的正则表达式。
答案 2 :(得分:0)
您可以使用一个正则表达式:“&lt; [/] * NOUN&gt;” 所以
s.replaceAll("<[/]*NOUN>","");
应该做的伎俩。 “[/] *”在“&lt;”之后匹配零或更多“/”。
答案 3 :(得分:0)
试试这个:String result = originValue.replaceAll("\\<.*?>", "");