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

标签 java regex

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

    (?<!\w)name(?!\w)

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

    name
    (name)

但不应匹配以下内容:

    myname
    names

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

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

    String regex = "((?<!\\w)name(?!\\w))";
    "(name".matches(regex); //it returns false

最佳答案

为什么不使用字边界?

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());
}

输出:

name found between indexes: 0 and 4
name found between indexes: 6 and 10

关于java - Java中的正则表达式匹配不属于其他单词的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17511230/

相关文章:

javascript - 如何使用 jquery 将标题大小写文本输出到 html 字段中

python - 在使用正则表达式库时向 python 中的符号添加反斜杠

javascript 正则表达式跳过方括号

java - 如何修改我的正则表达式以使其不匹配?

重复数字的正则表达式

java - 为什么从Fragment跳转到新的Activity时overridePendingTransition不生效?

java - Java 8 和 Java 7 处理 NumberFormatException 的方式有区别吗?

java - 在 Java Batch 中从读取器获取属性

java - 如何使用java api以列表作为参数在elasticsearch上进行搜索

java - 在 Java 中的 Apache Mahout 中测试随机梯度下降模型