Java正则表达式和replaceAll
我有以下案文: 最新的 我想用另一根绳子代替拉拉 仅当lala后面或后面有任何字符时,输出才应为Test[replace]Test 但我明白了:Tes[替换]est 代码:Java正则表达式和replaceAll,java,regex,Java,Regex,我有以下案文: 最新的 我想用另一根绳子代替拉拉 仅当lala后面或后面有任何字符时,输出才应为Test[replace]Test 但我明白了:Tes[替换]est 代码: 您可以使用lookarounds来确保单词的前后两边各有一个单词字符 strLine = strLine.replaceAll("(?<=\\w)" + word + "(?=\\w)", replaceWord); 您可以使用lookarounds来确保单词的前后两边各有一个单词字符 strLine = strLi
您可以使用lookarounds来确保单词的前后两边各有一个单词字符
strLine = strLine.replaceAll("(?<=\\w)" + word + "(?=\\w)", replaceWord);
您可以使用lookarounds来确保单词的前后两边各有一个单词字符
strLine = strLine.replaceAll("(?<=\\w)" + word + "(?=\\w)", replaceWord);
工作示例:
public class Main {
public static void main(String[] args) {
for (String prefix : new String[] { "pre", "" }) {
for (String suffix : new String[] { "suf", "" }) {
String toReplace = "lala";
String before = prefix + toReplace + suffix;
System.out.println(before + " -> "
+ before.replaceAll("(?<=.)" + toReplace
+ "|" + toReplace + "(?=.)", "[replaced]"));
}
}
}
}
如前所述,奇怪的是,您为单词字符编写了//w而不是\\w。我不知道以前是怎么换的
另外,您说过要匹配任何字符,这意味着您要使用.,而不是\\w.工作示例:
public class Main {
public static void main(String[] args) {
for (String prefix : new String[] { "pre", "" }) {
for (String suffix : new String[] { "suf", "" }) {
String toReplace = "lala";
String before = prefix + toReplace + suffix;
System.out.println(before + " -> "
+ before.replaceAll("(?<=.)" + toReplace
+ "|" + toReplace + "(?=.)", "[replaced]"));
}
}
}
}
如前所述,奇怪的是,您为单词字符编写了//w而不是\\w。我不知道以前是怎么换的
另外,您说过要匹配任何字符,这意味着您要使用.,而不是\\w.为什么要使用/而不是\?为什么要使用/而不是\?
prelalasuf -> pre[replaced]suf
prelala -> pre[replaced]
lalasuf -> [replaced]suf
lala -> lala