在Spring(Java)项目中使用简单的regexp和re2j库。在调试模式下我发现了这个模式:
^[0-9a-fA-F:]+$
字符串它编译了,但无法识别文本:
123ABC:DEF456 0:1:2:3:4:5 12345 90210-1234
型期望模式匹配文本,但hasMatch = false
xienkqul1#
我发现你当前的模式有多个问题。首先,分隔符可能是:或-,但你的模式只适合前者。此外,如果你想在多行中匹配许多这样的字符串,那么你需要考虑到这一点。试试这个版本:
:
-
^[0-9a-fA-F]+(?:[:-][0-9a-fA-F]+)*(?:\r?\n[0-9a-fA-F]+(?:[:-][0-9a-fA-F]+)*)*$
字符串
如果你一次只需要匹配一行,那么简化为:
^[0-9a-fA-F]+(?:[:-][0-9a-fA-F]+)*$
型
mznpcxlj2#
感谢@Wiktor Stribienew的评论:错过了MULTILINE标志?(?m)^[0-9a-fA-F:]+$这解决了问题:
MULTILINE
(?m)^[0-9a-fA-F:]+$
Pattern.compile(regEx, Pattern.MULTILINE)
2条答案
按热度按时间xienkqul1#
我发现你当前的模式有多个问题。首先,分隔符可能是
:
或-
,但你的模式只适合前者。此外,如果你想在多行中匹配许多这样的字符串,那么你需要考虑到这一点。试试这个版本:
字符串
Demo
如果你一次只需要匹配一行,那么简化为:
型
mznpcxlj2#
感谢@Wiktor Stribienew的评论:
错过了
MULTILINE
标志?(?m)^[0-9a-fA-F:]+$
这解决了问题:
字符串