我想查找和替换如下值:
<TAG>heading<foo></foo></TAG><foo>juergen</foo>
目标:
<TAG>heading</TAG><foo>juergen</foo>
我想删除<foo>
标签之间<TAG></TAG>
这是我的尝试:
replaceAll("</?foo\\b[^>]*>", "");
假设它foo
是空的,您可以使用:
<([^/][^>]*)></\1>
这将搜索具有相同名称的相邻结束标签的开始标签。
您可以通过以下方式扩充它以允许中间有空格:
<([^/][^>]*)>\s*</\1>
String result = searchText.replaceAll("(<f.*><.*o>)(?=<)", "");
除 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 )