[英]String.replaceAll() issue
我要替換的所有完全匹配
fm.get('Order#
在帶有值的冗長字符串中
fm.get('Order__'
我使用了像這樣的語法:
String calcStr = "return fm.get('Order#');";
String fname = "Order#";
String validfName = "Order__";
String modifiedCalc1 = calcStr.replaceAll("fm.get('"+fname+"\\b", "fm.get('"+validfName);
System.out.println(modifiedCalc1);
但我收到模式錯誤。
Exception in thread "main" java.util.regex.PatternSyntaxException:
Unclosed group near index 18
\bfm.get('Order#\b
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.accept(Unknown Source)
您需要轉義開頭的括號和要點。
在這種情況下,也請刪除最后的\\b
。
String modifiedCalc1 = calcStr.replaceAll("fm\\.get\\('"+fname, "fm.get('"+validfName);
如果要使用需要正則表達式的API替換文字字符串,則可以使用Pattern.quote
(用於模式端)和Matcher.quoteReplacement
(用於替代端):
calcStr.replaceAll(Pattern.quote("fm.get('Order#"),
Matcher.quoteReplacement("fm.get('Order__"));
在這種情況下,似乎確實不需要正則表達式功能。
因此,可以使用純字符串替換來提高效率:
String modifiedCalc1 = calcStr.replace("fm.get('"+fname, "fm.get('"+validfName);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.