我正在从Jakarta Regexp迁移到标准的Java 6正则表达式包java.util.regex.我没有在正则表达式中指定开头^和结尾时注意到以下区别$:当regexp匹配部分字符串时,Jakarta Regexp返回true,而Java 6 java.util.regex包不返回:
String regexp = "\\d";
String value = "abc1abc";
Pattern pattern = Pattern.compile(regexp);
Matcher matcher = pattern.matcher(value);
result = matcher.matches(); // returns false
Run Code Online (Sandbox Code Playgroud)
返回false而:
RE re = new RE(regexp);
re.match(value); // returns true
Run Code Online (Sandbox Code Playgroud)
退货true.
这背后的原因是什么?我已经考虑过贪婪/懒惰的匹配,但在JDK 6不匹配的情况下似乎没有相关性.
我应该注意哪些其他差异?
该java.util.regex.Matcher.matches()方法会试图匹配正则表达式的完整输入的字符串,这将是false.
如果要在输入字符串中搜索模式,则需要使用java.util.regex.Matcher.find()方法:
result = matcher.find(); // returns true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |