[英]Java - replaceAll by regex, then replace first occurance of string
我的字符串里面帶有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>
標簽; 我只想替換與剛匹配的開始標簽匹配的標簽。
為什么不在一個replaceAll(...)
調用中這樣做:
String s = "noise <span title=\"whatever\">something I want to preserve</span>...";
s = s.replaceAll("<span\\s+[^>]*title=(['\"])(.*?)\\1[^>]*>(.*?)</span>", "($3)");
System.out.println(s);
它將打印:
noise (something I want to preserve)...
請注意我的回答下的Alan評論:這假設您在輸入中沒有嵌套<span>
。
我建議您使用單個正則表達式來匹配整個<span ...>...</span>
。 在一個組中捕獲<span>
在另一組中捕獲</span>
,然后使用捕獲組進行替換。
代替替換<span>
標簽,您可以嘗試提取<span>
標簽的內容,然后用花括號將其包裝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.