【发布时间】:2011-11-11 12:18:26
【问题描述】:
我有这个带有 HTML 的字符串:<span title="whatever">something I want to preserve</span>...
我正在使用正则表达式将<span title="whatever"> 替换为(,然后将以下</span> 替换为)
Pattern regex = Pattern.compile("<span\\s+[^>]*title=(['\"])(.*?)\\1[^>]*>");
Matcher matcher = regex.matcher(strLine);
if (matcher.find()) {
strLine = matcher.replaceAll("(");
strLine = strLine.replace("</span>", ")");
}
我可以工作,但它替换了所有</span> 标签;我只想替换与我刚刚匹配的开始标签匹配的那个。
【问题讨论】:
-
你试过
replace而不是replaceAll吗? -
所以如果我理解正确的话,你需要用 () 替换任何带有标题的跨度,但是任何没有标题的跨度你都不想理会。你上面的问题是开始标签
<span>被正确替换了,但是太多的结束标签</span>被替换了(即那些匹配没有标题的开始标签。这是正确的吗?跨度>