猿问

为什么不同的字符串与模式匹配?

我正在使用 Java 1.7。

我预计:

Pattern ddmmyyyyPattern = Pattern.compile("(\\d{1,2}[- /.]\\d{1,2}[- /.]\\d{4})");

应匹配至少出现 2 次分隔符 -/ 的字符串。但是,以下是匹配的

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})");

请帮助我纠正模式!


隔江千里
浏览 124回答 3
3回答

HUH函数

发生这种情况是因为字符类也匹配一个空格。您可以使用带有反向引用的捕获组来匹配date like模式。请注意,它不会验证日期本身。\d{1,2}([-/.])\d{1,2}\1\d{4}关于图案\d{1,2}匹配 1 或 2 个数字([-/.])在组中捕获匹配 - / 或 .\d{1,2}匹配 1 或 2 个数字\1对第 1 组中捕获的内容的反向引用(因此 12/12-2019 将不匹配)\d{4}匹配 4 位数字在爪哇中:String regex = "\\d{1,2}([-/.])\\d{1,2}\\1\\d{4}";正则表达式演示| Java演示请注意,对于匹配,您可以省略外括号。

收到一只叮咚

您需要从字符类中删除空格\\d{1,2}[- /.]\\d{1,2}[- /.]\\d{4}         ^             ^改成这个\\d{1,2}[-/.]\\d{1,2}[-/.]\\d{4}

函数式编程

试试这个模式:\d{1,2}([-\/.])\d{1,2}([-\/.])\d{4}当然,应该从正则表达式中删除空格,并且字符“/”之前需要有一个反斜杠才能被识别。
随时随地看视频慕课网APP

相关分类

Java
我要回答