请考虑以下代码段:
String input = "Print this";
System.out.println(input.matches("\\bthis\\b"));
输出
false
这种方法可能有什么问题?如果是错误的,那么找到精确匹配的单词的正确解决方案是什么?
附言:我在这里发现了许多类似的问题,但没有一个能提供我想要的解决方案。提前谢谢。
有关详细说明,请参阅: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"));
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);
}
解释:
使用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