[英]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>]"
在括号内定义要识别并因此删除的字符集 。 因此,您要求删除字符<
, >
, /
, N
, O
, U
和逗号。
也许最简单的方法就是做你想要的:
s.replaceAll("<NOUN>","").replaceAll("</NOUN>","");
这是明确的删除。 更复杂的正则表达式显然是可能的。
你可以使用一个正则表达式:“<[/] * NOUN>”所以
s.replaceAll("<[/]*NOUN>","");
应该做的伎俩。 “[/] *”在“<”之后匹配零或更多“/”。
试试这个: String result = originValue.replaceAll("\\\\<.*?>", "");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.