【发布时间】:2017-07-12 16:09:30
【问题描述】:
我有一个正则表达式 def regex = "^Line[\\s]+(?:(\\d+)\\s)?\\s*:\\s+(\\d+)?.+"; 匹配下面的字符串
Line 1 : testMessage1
Line : 2 testMessage2
现在我正在尝试使正则表达式使 : 成为可选的,以便它可以匹配像
Line 3 testMessage3
我尝试将我的正则表达式更改为^Line[\s]+(?:?(\d+)\s)?\s*:?\s+(\d+)?.+
java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 13
^Line[\s]+(?:?(\d+)\s)?\s*:?\s+(\d+)?.+
有人可以帮我修复正则表达式吗?
【问题讨论】:
-
您不能将
(?:设为可选,它是非捕获组的一部分。去掉后面的?。 -
嗯,你可以试试
^Line(?:(?:\s*:)?\s*(\d+))?.+。