0

我想查找和替换如下值:

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

目标:

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

我想删除<foo>标签之间<TAG></TAG>

这是我的尝试:

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

3 回答 3

1

假设它foo是空的,您可以使用:

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

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

您可以通过以下方式扩充它以允许中间有空格:

<([^/][^>]*)>\s*</\1>
于 2013-05-27T23:04:15.607 回答
1
String result = searchText.replaceAll("(<f.*><.*o>)(?=<)", "");
于 2013-05-27T23:29:22.877 回答
1

除 XHTML 自包含标签外,可能存在重复的 RegEx 匹配打开标签

否则,这里是正则表达式,甚至不要让我解释,我几乎不了解自己(这是在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    )
于 2013-05-27T23:22:25.563 回答