java正则表达式中[^ \ d]。*和^ [^ \ d]。*之间的区别

时间:2014-06-30 02:14:44

标签: java regex

如果字符串在开头没有数字,则

^[^\d].*将返回true。 [^\d].*似乎与^[^\d].的工作方式相同但它们之间有何不同? 哪个字符串可以匹配^[^\d].*但不匹配[^\d].*

1 个答案:

答案 0 :(得分:6)

这取决于您使用matches()还是Matcher.find()

  • [^\d].*匹配一个不是数字的字符,然后匹配直到行尾的所有内容:例如,abc
  • ^锚点断言我们位于字符串的开头。因此,^[^\d].*匹配,从行的开头开始,一个字符不是数字,然后是直到行尾的任何内容。它会匹配abc行,但与此行abc上的1 abc不匹配:matches()
  • 在Java中,使用matches()方法,如果模式匹配整个字符串(它不搜索潜在的子字符串匹配),则matches()匹配将没有区别。使用^与使用完全锚定$Matcher.find()
  • 的正则表达式相同
  • 如果你使用{{1}},你会发现上面的差异,因为它会在主题字符串中的任何地方搜索匹配项。

<强>参考

相关问题