查找和替换两个值之间的字符串

时间:2013-05-27 22:50:26

标签: java regex

我想找到并替换以下值:

<TAG>heading<foo></foo></TAG><foo>juergen</foo>

目标:

<TAG>heading</TAG><foo>juergen</foo>

我想删除<foo>

之间的<TAG></TAG>代码

这是我的尝试:

replaceAll("</?foo\\b[^>]*>", "");

3 个答案:

答案 0 :(得分:1)

假设foo为空,您可以使用:

<([^/][^>]*)></\1>

这将搜索带有相同名称的相邻结束标记的开始标记。

你可以增加它以允许中间的空格:

<([^/][^>]*)>\s*</\1>

答案 1 :(得分:1)

可能重复RegEx match open tags except XHTML self-contained tags

否则,这里是正则表达式,甚至不要求我解释,我几乎不知道自己(这是在javascript中,可能需要对java进行一些修正):

var txt = "<TAG>a<foo>b</foo>c</TAG>d<foo>e</foo>f<TAG>g<foo>h</foo>i</TAG>j<TAG>k</TAG>";
var res = txt.replace(/(<TAG>.*?)<foo>.*?<\/foo>(.*?<\/TAG>)/gm,"$1$2");
//                     (   $1   )               (    $2    )

答案 2 :(得分:1)

String result = searchText.replaceAll("(<f.*><.*o>)(?=<)", "");