Java中的正则表达式匹配不属于其他单词的单词

xsi*_*arx 3 java regex

我为此创建了这个正则表达式:

    (?<!\w)name(?!\w)
Run Code Online (Sandbox Code Playgroud)

我希望这将匹配以下内容:

    name
    (name)
Run Code Online (Sandbox Code Playgroud)

但不应匹配以下内容:

    myname
    names
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我在 Java 中使用这种模式,它不适用于使用不同于空格的其他符号(如括号)的情况。

我在这个站点(http://gskinner.com/RegExr/,这是一个非常好的站点 btw )中测试了正则表达式并且它有效,所以我想知道 Java 是否需要不同的语法。

    String regex = "((?<!\\w)name(?!\\w))";
    "(name".matches(regex); //it returns false
Run Code Online (Sandbox Code Playgroud)

Men*_*ena 5

为什么不使用词边界?

Pattern pattern = Pattern.compile("\\bname\\b");
String test = "name (name) mynames";
Matcher matcher = pattern.matcher(test);
while (matcher.find()) {
    System.out.println(matcher.group() + " found between indexes: " + matcher.start() + " and " + matcher.end());
}
Run Code Online (Sandbox Code Playgroud)

输出:

name found between indexes: 0 and 4
name found between indexes: 6 and 10
Run Code Online (Sandbox Code Playgroud)