如何从字符串中删除特定的特殊字符模式

Ros*_*nck 2 java string

我有一个字符串名称s,

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";  
Run Code Online (Sandbox Code Playgroud)

我想从字符串中删除所有< NOUN >和< / NOUN >标记.我用它来删除标签,

s.replaceAll("[<NOUN>,</NOUN>]","");
Run Code Online (Sandbox Code Playgroud)

是的,它删除了标签.但它也会从字符串中删除字母"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
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何正确地做到这一点?

Hub*_*bro 13

尝试:

s.replaceAll("<NOUN>|</NOUN>", "");
Run Code Online (Sandbox Code Playgroud)

在RegEx中,语法[...]将匹配括号内的每个字符,无论它们出现的顺序如何.因此,在您的示例中,所有外观"<","N","O"等都将被删除.而是使用pipe(|)来匹配"<NOUN>"和"</ NOUN>".

以下也应该有效(并且可以被认为更干燥和优雅)因为它将匹配带有和不带正斜杠的标签:

s.replaceAll("</?NOUN>", "");
Run Code Online (Sandbox Code Playgroud)