当前位置: 首页 > 面试题库 >

Java Regex中match()和find()之间的区别

司徒俊良
2023-03-14
问题内容

我想明白之间的差别matches()find()

根据Javadoc,(据我了解),matches()即使找到了所要查找的内容,它也会搜索整个字符串,并find()在找到所要查找的内容时停止。

如果这个假设是正确的,我看不到,只要你想使用matches()的,而不是find(),除非你想指望它找到匹配的数量。

在我看来,String类应该具有find()而不是matches()作为内置方法。

总结一下:

  1. 我的假设正确吗?
  2. 什么时候matches()代替有用find()

问题答案:

matches尝试将表达式与整个字符串匹配,^$在模式的开头和结尾隐式添加a ,这意味着它将不查找子字符串。因此,此代码的输出:

public static void main(String[] args) throws ParseException {
    Pattern p = Pattern.compile("\\d\\d\\d");
    Matcher m = p.matcher("a123b");
    System.out.println(m.find());
    System.out.println(m.matches());

    p = Pattern.compile("^\\d\\d\\d$");
    m = p.matcher("123");
    System.out.println(m.find());
    System.out.println(m.matches());
}

/* output:
true
false
true
true
*/

123是的子字符串,a123b因此该find()方法输出truematches()只能“看到” a123b,它与不相同123,因此输出false。



 类似资料:
  • 问题内容: Java 正则表达式中match()和find()之间的区别? 问题答案: 尝试将表达式与整个字符串匹配,并在模式的开头和结尾隐式添加 ,这意味着它将不查找子字符串。因此,此代码的输出: 是的子字符串,因此该方法输出。仅“看到” 与“不相同” ,因此输出。

  • 问题内容: 当您使用 BeautifulSoup 抓取网站的特定部分时,您可以使用 和或 。 和方法之间有区别吗?(例如,性能或灵活性等)还是相同? 问题答案: 总结评论: select 查找多个实例并返回一个列表, find 查找第一个实例,因此它们不会执行相同的操作。 select_one 将等同于 find 。 我链接时,标签或使用几乎总是使用CSS选择 tag.classname ,如果寻

  • 本文向大家介绍re的match和search区别?相关面试题,主要包含被问及re的match和search区别?时的应答技巧和注意事项,需要的朋友参考一下 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。 re.search 扫描整个字符串并返回第一个成功的匹配。  

  • 问题内容: 我有两个问题,可能需要一些帮助来理解它们。 和之间有什么区别?我知道这 意味着在单独的外壳中运行命令,然后将其传递给变量。有人可以帮助我理解这一点吗?如果我错了,请纠正我。 如果我们可以使用并且效果很好,那我为什么不能使用它呢?两者的执行周期有何不同? 问题答案: 语法是令牌级别的,因此美元符号的含义取决于其所在的令牌。表达式是现代代名词,代表命令替换;这意味着运行并将其输出放在此处。

  • 问题内容: 我对和感到困惑。我有两本PHP书。一个说它们是相同的,但是另一个说它们是不同的。我以为他们也一样。 他们不一样吗? 问题答案: 是按位与。请参见按位运算符。假设您这样做: 是逻辑AND。请参阅逻辑运算符。考虑一下这个真值表:

  • 问题内容: 这个问题已经在这里有了答案 : JavaScript比较中应使用哪个等于运算符(== vs ===)? (49个答案) 5个月前关闭。 和之间的区别是什么?我也看过和运算符。还有更多这样的运营商吗? 问题答案: 并且是严格的比较运算符: JavaScript具有严格和类型转换相等性比较。为了相等,要比较的对象必须具有相同的类型,并且: 当两个字符串在相同位置具有相同的字符序列,相同的长