[英]Replace String in Java with regex and replaceAll
有沒有一種簡單的解決方案,可以通過在Java中使用正則表達式來解析String
?
我必須適應HTML頁面。 因此,我必須解析幾個字符串,例如:
href="/browse/PJBUGS-911"
=>
href="PJBUGS-911.html"
字符串的圖案僅對應於ID(例如911
)而不同。 我的第一個想法如下所示:
String input = "";
String output = input.replaceAll("href=\"/browse/PJBUGS\\-[0-9]*\"", "href=\"PJBUGS-???.html\"");
我想替換除ID之外的所有內容。 我怎樣才能做到這一點?
如果有人可以幫助我會很好:)
您可以使用括號捕獲與模式匹配的子字符串。 然后,您可以在$n
替換中使用捕獲的內容,其中n
是括號集合的數目(從左到右計數開括號)。 例如:
String output = input.replaceAll("href=\"/browse/PJBUGS-([0-9]*)\"", "href=\"PJBUGS-$1.html\"");
或者,如果您想:
String output = input.replaceAll("href=\"/browse/(PJBUGS-[0-9]*)\"", "href=\"$1.html\"");
這不使用regexp。 但是也許它仍然可以解決您的問題。
output = "href=\"" + input.substring(input.lastIndexOf("/")) + ".html\"";
這就是我要做的:
public static void main(String[] args)
{
String text = "href=\"/browse/PJBUGS-911\" blahblah href=\"/browse/PJBUGS-111\" " +
"blahblah href=\"/browse/PJBUGS-34234\"";
Pattern ptrn = Pattern.compile("href=\"/browse/(PJBUGS-[0-9]+?)\"");
Matcher mtchr = ptrn.matcher(text);
while(mtchr.find())
{
String match = mtchr.group(0);
String insMatch = mtchr.group(1);
String repl = match.replaceFirst(match, "href=\"" + insMatch + ".html\"");
System.out.println("orig = <" + match + "> repl = <" + repl + ">");
}
}
這只是顯示正則表達式和替換,而不是最終的格式化文本,您可以使用Matcher.replaceAll
獲得:
String allRepl = mtchr.replaceAll("href=\"$1.html\"");
如果只想替換所有內容,則不需要循環-我僅將其用於調試/顯示regex的業務方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.