正则表达式标签消除

时间:2016-11-06 21:50:52

标签: java regex

我正在尝试编写一个正则表达式,它将消除特定标记但保留其值。

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

之后的所有文字

2 个答案:

答案 0 :(得分:1)

作为第一个近似值,<link[^>]*>应该有效。 (这意味着匹配<link后跟任意数量的不是>的字符,然后是>。)但是当一个直角括号出现在属性值。

更好的方法是根本不使用正则表达式,而是使用XML解析器。

答案 1 :(得分:0)

试试这段代码:

<\/?link.*?>

请参阅此处的示例:https://regex101.com/r/yUVFpR/1

对于replaceAll功能,请尝试以下操作:

s = s.replaceAll("<link>([^<]*)</link>","$1");