我有一个正则表达式 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]+(?:?(\d+)\s)?\s*:?\s+(\d+)?.+
^----- Here, remove this '?'
另一方面,如果您希望冒号作为可选,则必须修复 \s
:
Line\s+(?:(\d+)\s*)?\s*:?\s+(\d+)?.+
^---- Here
<强> Working demo
此外,我清理了一些您可能会觉得有用的正则表达式:
Line\s+(\d)?\s*:?\s*(\d)?.*
关于java.util.regex.PatternSyntaxException : Dangling meta character '?' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45062816/