regex RE2未能匹配简单模式

ds97pgxw  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(120)

在Spring(Java)项目中使用简单的regexp和re2j库。在调试模式下我发现了这个模式:

^[0-9a-fA-F:]+$

字符串
它编译了,但无法识别文本:

123ABC:DEF456
0:1:2:3:4:5
12345
90210-1234


期望模式匹配文本,但hasMatch = false

xienkqul

xienkqul1#

我发现你当前的模式有多个问题。首先,分隔符可能是:-,但你的模式只适合前者。此外,如果你想在多行中匹配许多这样的字符串,那么你需要考虑到这一点。
试试这个版本:

^[0-9a-fA-F]+(?:[:-][0-9a-fA-F]+)*(?:\r?\n[0-9a-fA-F]+(?:[:-][0-9a-fA-F]+)*)*$

字符串

Demo

如果你一次只需要匹配一行,那么简化为:

^[0-9a-fA-F]+(?:[:-][0-9a-fA-F]+)*$

mznpcxlj

mznpcxlj2#

感谢@Wiktor Stribienew的评论:
错过了MULTILINE标志?(?m)^[0-9a-fA-F:]+$
这解决了问题:

Pattern.compile(regEx, Pattern.MULTILINE)

字符串

相关问题