繁体   English   中英

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

[英]How to remove a specific special character pattern from a 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";  

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

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

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

尝试:

s.replaceAll("<NOUN>|</NOUN>", "");

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

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

s.replaceAll("</?NOUN>", "");

String.replaceAll()将正则表达式作为其第一个参数。 正则表达式:

"[<NOUN>,</NOUN>]"

在括号内定义要识别并因此删除的字符集 因此,您要求删除字符<>/NOU和逗号。

也许最简单的方法就是做你想要的:

s.replaceAll("<NOUN>","").replaceAll("</NOUN>","");

这是明确的删除。 更复杂的正则表达式显然是可能的。

你可以使用一个正则表达式:“<[/] * NOUN>”所以

s.replaceAll("<[/]*NOUN>","");

应该做的伎俩。 “[/] *”在“<”之后匹配零或更多“/”。

试试这个: String result = originValue.replaceAll("\\\\<.*?>", "");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM