下面我試圖用替換字符串xxx替換精確的搜索字符串。我有類似於Java日誌消息的字符串原始。正如你可以看到,如果搜索字符串是「變量」,我可以用xxx成功替換它,但是當搜索字符串是「variable.method()」或「variable.method2()」時,我無法替換它。我在這裏做錯了什麼?Scala正則表達式replaceAllIn與特殊字符完全匹配
val original = """variable+ " is in " + variable.method() + " and " + variable.method2()"""
val replaceStr = "xxx"
val searchStr = "variable.method()" // This can change like in the output below
val variableExtracter = ("(?<=^|\\s|\\+)"+searchStr+"(?=\\s|$|\\+)").r
print("Search string : " + searchStr + "\n")
print("Original :" + original + "\n")
val formatted = variableExtracter.replaceAllIn(original, replaceStr)
print("Formatted :" + formatted + "\n")
Output:
Search string : variable //CORRECT OUTPUT
Original :variable+ " is in " + variable.method() + " and " + variable.method2()
Formatted :xxx+ " is in " + variable.method() + " and " + variable.method2()
---
Search string : variable.method()
Original :variable+ " is in " + variable.method() + " and " + variable.method2()
Formatted :variable+ " is in " + variable.method() + " and " + variable.method2()
//EXPECTED OUTPUT: variable+ " is in " + xxx + " and " + variable.method2()
---
Search string : variable.method2()
Original :variable+ " is in " + variable.method() + " and " + variable.method2()
Formatted :variable+ " is in " + variable.method() + " and " + variable.method2()
//EXPECTED OUTPUT:variable+ " is in " + variable.method() + " and " + xxx
---
Search string : variable.method()
Original :variable.method()+ " has " + variable + " and " + variable.method2()
Formatted :variable.method()+ " has " + variable + " and " + variable.method2()
//EXPECTED OUTPUT:xxx+ " has " + variable + " and " + variable.method2()
您期待接收「xxx.method()」還是用「xxx」完全替換「variable.method()」? – tysonjh
我正在嘗試替換EXACT MATCH搜索字符串。所以上面我試圖用xxx替換完整的「variable.method()」。 – yalkris
您需要轉義searchStr中的特殊字符 – tysonjh