Java正则表达式和replaceAll

Java正则表达式和replaceAll,java,regex,Java,Regex,我有以下案文: 最新的 我想用另一根绳子代替拉拉 仅当lala后面或后面有任何字符时,输出才应为Test[replace]Test 但我明白了:Tes[替换]est 代码: 您可以使用lookarounds来确保单词的前后两边各有一个单词字符 strLine = strLine.replaceAll("(?<=\\w)" + word + "(?=\\w)", replaceWord); 您可以使用lookarounds来确保单词的前后两边各有一个单词字符 strLine = strLi

我有以下案文:

最新的

我想用另一根绳子代替拉拉

仅当lala后面或后面有任何字符时,输出才应为Test[replace]Test

但我明白了:Tes[替换]est

代码:


您可以使用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