Java 为什么不同的字符串与模式匹配?
我正在使用Java1.7 我期望:Java 为什么不同的字符串与模式匹配?,java,regex,Java,Regex,我正在使用Java1.7 我期望: Pattern ddmmyyyyPattern = Pattern.compile("(\\d{1,2}[- /.]\\d{1,2}[- /.]\\d{4})"); 应将字符串与至少两个分隔符-/匹配。 但是,以下是匹配的 07 2.3180, 45 3.3183, 19 4.3183, 77 5.3025, 25 6.3023. 此外,9507 2.31与 Pattern yyyymmddPattern = Pattern.compile("(\\d{
Pattern ddmmyyyyPattern = Pattern.compile("(\\d{1,2}[- /.]\\d{1,2}[- /.]\\d{4})");
应将字符串与至少两个分隔符-/匹配。
但是,以下是匹配的
07 2.3180, 45 3.3183, 19 4.3183, 77 5.3025, 25 6.3023.
此外,9507 2.31与
Pattern yyyymmddPattern = Pattern.compile("(\\d{4}[- /.]\\d{1,2}[- /.]\\d{1,2})");
请帮我纠正这个模式 之所以发生这种情况,是因为character类也与空格匹配 您可以使用带有反向引用的捕获组来匹配类似于模式的日期。请注意,is不会验证日期本身
\d{1,2}([-/.])\d{1,2}\1\d{4}
关于图案
匹配1或2个数字\d{1,2}
在组中捕获匹配-/or([-/.])
匹配1或2个数字\d{1,2}
反向引用第1组中捕获的内容(因此2019年12月12日将不匹配)\1
匹配4位数字\d{4}
String regex = "\\d{1,2}([-/.])\\d{1,2}\\1\\d{4}";
|
请注意,对于匹配项,可以省略外圆括号。这是因为字符类也匹配空格 您可以使用带有反向引用的捕获组来匹配类似于模式的日期。请注意,is不会验证日期本身
\d{1,2}([-/.])\d{1,2}\1\d{4}
关于图案
匹配1或2个数字\d{1,2}
在组中捕获匹配-/or([-/.])
匹配1或2个数字\d{1,2}
反向引用第1组中捕获的内容(因此2019年12月12日将不匹配)\1
匹配4位数字\d{4}
String regex = "\\d{1,2}([-/.])\\d{1,2}\\1\\d{4}";
|
请注意,对于匹配项,可以省略外括号。需要从字符类中删除空格
\\d{1,2}[- /.]\\d{1,2}[- /.]\\d{4}
^ ^
换成这个
\\d{1,2}[-/.]\\d{1,2}[-/.]\\d{4}
您需要从字符类中删除空格
\\d{1,2}[- /.]\\d{1,2}[- /.]\\d{4}
^ ^
换成这个
\\d{1,2}[-/.]\\d{1,2}[-/.]\\d{4}
尝试以下模式:
\d{1,2}([-\/.])\d{1,2}([-\/.])\d{4}
当然,空白区域应该从正则表达式中删除,字符“/”需要在它之前有一个反斜杠,以便它被识别。 < P>试试这个模式:
\d{1,2}([-\/.])\d{1,2}([-\/.])\d{4}
当然,空白区域应该从正则表达式中删除,字符“/”需要在其前面有一个反斜杠才能识别。匹配模式与执行相等检查不同:可以有多个值与模式匹配匹配模式与执行相等检查不同:可以有多个值与模式匹配