Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta Regexp和Java 6 Java.util.regex之间的差异_Java_Regex - Fatal编程技术网

Jakarta Regexp和Java 6 Java.util.regex之间的差异

Jakarta Regexp和Java 6 Java.util.regex之间的差异,java,regex,Java,Regex,我正在从Jakarta Regexp迁移到标准Java6正则表达式包Java.util.regex。在regexp中不指定开头^和结尾$时,我注意到了以下区别:当regexp与字符串的一部分匹配时,Jakarta regexp返回true,而Java 6 Java.util.regex包不匹配: String regexp = "\\d"; String value = "abc1abc"; Pattern pattern = Pattern.compile(regexp); Matcher

我正在从Jakarta Regexp迁移到标准Java6正则表达式包
Java.util.regex
。在regexp中不指定开头
^
和结尾
$
时,我注意到了以下区别:当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
返回
false
而:

RE re = new RE(regexp);
re.match(value); // returns true
返回
true

这背后的原因是什么?我曾考虑过贪婪/懒惰匹配,但这似乎与JDK 6不匹配的情况无关

还有什么我应该注意的差异吗?

使用
find()
而不是
matches()
。它的功能完全符合您的预期

该方法将尝试将完整的输入字符串与正则表达式匹配,正则表达式将为
false

如果要在输入字符串中搜索模式,则需要使用方法:

 result = matcher.find(); // returns true

有什么重要的句法差异吗?或者这个
匹配
/
查找
的东西是雅加达Regexp的用户唯一应该关心的事情?嗯,我不知道,但我对雅加达Regexp一点也不熟悉。例如,雅加达的
[:digit://code>是JDK中的
\d
。或者雅加达的
[:xdigit:
变成
\p{xdigit}