使用明确的单词边界,
(?<!w)和
(?!w),而不是
b上下文相关的:
from = "(?<!\w)" + Pattern.quote(from) + "(?!\w)";
请参阅 regex演示 。
(?<!w)如果在当前位置的左侧紧邻有一个非单词char
,则是一个向后的否定后向匹配;如果在当前位置的右侧紧邻有一个非char字符,
(?!w)则一个否定的向前查找使匹配失败。
。在
Pattern.quote(from)逃跑中的任何特殊字符是必要的
from变量。
参见Java演示:
String line = "add, $temp4, $temp40, 42";String to = "register1";String from = "$temp4";String outString;from = "(?<!\w)" + Pattern.quote(from) + "(?!\w)";outString = line.replaceAll(from, to);System.out.println(outString);// => add, register1, $temp40, 42



