我正在尝试编写一个正则表达式,它将消除特定标记但保留其值。
String s = "I am trying to eliminate tag link <link class < =abc>okay</link>"
或:
String s = "I am trying to eliminate tag link <link>okay</link>"
直接用regex = "</link>"
替换结束标记,但是开始标记可以包含任意数量的属性。
所需的输出应为"I am trying to eliminate tag link okay"
我尝试了s = s.replaceAll("<link.*>$","")
,但它取代了<link
答案 0 :(得分:1)
作为第一个近似值,<link[^>]*>
应该有效。 (这意味着匹配<link
后跟任意数量的不是>
的字符,然后是>
。)但是当一个直角括号出现在属性值。
更好的方法是根本不使用正则表达式,而是使用XML解析器。
答案 1 :(得分:0)
试试这段代码:
<\/?link.*?>
请参阅此处的示例:https://regex101.com/r/yUVFpR/1
对于replaceAll
功能,请尝试以下操作:
s = s.replaceAll("<link>([^<]*)</link>","$1");