当前位置: 首页 > 知识库问答 >
问题:

如何在Java中使用正则表达式找到确切的单词?

莫繁
2023-03-14

请考虑以下代码段:

String input = "Print this";
System.out.println(input.matches("\\bthis\\b"));

输出

false

这种方法可能有什么问题?如果是错误的,那么找到精确匹配的单词的正确解决方案是什么?

附言:我在这里发现了许多类似的问题,但没有一个能提供我想要的解决方案。提前谢谢。

共有3个答案

甄阳朔
2023-03-14

有关详细说明,请参阅:http://www.regular-expressions.info/java.html

myString.matches("regex")返回true或false,具体取决于字符串是否可以完全由正则表达式匹配。重要的是要记住,只有当整个字符串可以匹配时,String.matches()才返回true。换句话说:“正则表达式”的应用就像您编写了字符串锚点开头和结尾的“^regex$”一样。这与大多数其他正则表达式库不同,在大多数其他正则表达式库中,如果正则表达式可以在字符串中的任何位置匹配,则“快速匹配测试”方法返回true。如果myString是abc,则myString.matches(“bc”)返回false。bc匹配abc,但^bc$(此处实际使用)不匹配。

这写着“真”:

String input = "Print this";
System.out.println(input.matches(".*\\bthis\\b"));
潘衡
2023-03-14

matcher的完整示例方法:

public static String REGEX_FIND_WORD="(?i).*?\\b%s\\b.*?";

public static boolean containsWord(String text, String word) {
    String regex=String.format(REGEX_FIND_WORD, Pattern.quote(word));
    return text.matches(regex);
}

解释:

  1. (?i)-忽略案例
夔桐
2023-03-14

使用matches()方法时,它试图匹配整个输入。在您的示例中,输入“Print this”与模式不匹配,因为单词“Print”不匹配。

因此,您需要向正则表达式添加一些内容以匹配字符串的初始部分,例如。

.*\\bthis\\b

如果您也想在行尾允许额外的文本:

.*\\bthis\\b.*

或者,使用Matcher对象并使用Matcher.find()在输入字符串中查找匹配项:

    Pattern p = Pattern.compile("\\bthis\\b");
    Matcher m = p.matcher("Print this");
    m.find();
    System.out.println(m.group());

输出:

this

如果要在一行中找到多个匹配项,可以重复调用search()group()将它们全部提取出来。

 类似资料:
  • 问题内容: 考虑以下代码片段: 输出量 这种方法可能有什么问题?如果错了,那么找到确切的单词匹配的正确解决方案是什么? PS:我在这里发现了许多类似的问题,但没有一个提供我正在寻找的解决方案。提前致谢。 问题答案: 当您使用该方法时,它试图匹配整个输入。在您的示例中,输入 “ Print this” 与模式不匹配,因为单词 “ Print” 不匹配。 因此,您需要在正则表达式中添加一些内容以匹配字

  • 问题内容: 在执行程序期间,我需要使用其他jar。我手动将罐子添加到相对的./lib文件夹中,然后执行程序。如何在清单文件中定义类路径? 问题答案: 您不能在清单的属性中使用正则表达式或其他通配符。 Java中仅支持一种通配符,并且仅当在命令行上在“手动” 调用(即,不使用)上指定时,该通配符才能使用:usingdirectoryname/*。

  • 本文向大家介绍如何在TestNG中使用正则表达式?,包括了如何在TestNG中使用正则表达式?的使用技巧和注意事项,需要的朋友参考一下 我们在TestNG中使用正则表达式来使用以某种模式命名的一组测试方法。 示例 Testng xml文件。 所有名称开头为Payment的测试方法都将从回归套件中排除。 示例 Login()将被执行,但是所有以名字Payment开头的方法都将被排除在执行之外。这是使

  • 问题内容: 谁能给我一个Java正则表达式来识别字符串中的重复字符?我只是在寻找立即重复的字符,它们可以是字母或数字。 例: abccde <-寻找此内容(立即重复c的内容) abcdce <-不是这个(c用另一个字符分隔) 问题答案: 尝试 在任何单词字符(字母,数字或下划线)和匹配无论是在第一组括号,一次或多次的比赛。因此,您可以匹配出现的任何一个单词字符,然后立即再次匹配一个或多个相同的单词

  • 本文向大家介绍Java正则表达式使用,包括了Java正则表达式使用的使用技巧和注意事项,需要的朋友参考一下 一:抓取网页中的Email地址 利用正则表达式匹配网页中的文本 将网页内容分割提取 打印结果: 867124664@qq.com 260678675@QQ.com 806208721@qq.com hr_1985@163.com 32575987@qq.com qingchen0501@12