Java中正则表达式的部分匹配

时间:2016-06-10 14:58:03

标签: java regex string pattern-matching

我如何理解正则表达式是否与其主题部分匹配?

我试过了:

Pattern.compile("^\\d").matcher("01L").hitEnd()

和此:

Pattern.compile("^\\d").matcher("01L").matches()

并且它们都是假的,我想测试字符串是否以数字开头。

1 个答案:

答案 0 :(得分:5)

使用matcher.find()方法:

boolean valid = Pattern.compile("^\\d").matcher("01L").find(); //true

PS:如果您在循环中使用find或多次使用,最好这样做:

Pattern p = Pattern.compile("^\\d"); // outside loop
boolean valid = p.matcher("01L").find(); // repeat calls

你得到了:

  • matches尝试将整个输入与模式匹配,因此返回false
  • 如果输入的结尾在此匹配器执行的最后一次匹配操作中被搜索引擎命中,则
  • hitEnd会返回true,因为它没有得到false