我正在尝试匹配类似以下内容的东西:
foo: anything after the colon can be matched with (.*)+
foo.bar1.BAZ: balh5317{}({}(
这是我使用的正则表达式:
/^((?:(?:(?:[A-Za-z_]+)(?:[0-9]+)?)+[\.]?)+)(?:\s)?(?:\:)(?:\s)?((?:.*)+)$/
抱歉非匹配组和多余的括号,这是从生成器类编译的。
这对于例子来说很有效。问题出现在我尝试输入像这样的字符串时:
foo.bar.baz.beef.stew.ect.and.forward
我需要能够检查这样的字符串,但是正则表达式引擎在每次遇到一定数量的
foo.
后就会超时或无限运行(据我所知)。我相信这是一个逻辑问题,可惜我远未掌握正则表达式,希望有经验的用户能够为我指点如何更高效地匹配。
此外,以下是我需要匹配的更详细描述:
Property Name: can contain A-z, numbers, and underscores but can't start with a number
<Property Name>.<Property Name>.<Prop...:<Anything after the colon>
感谢您的时间!
\b((?:[A-Za-z_][A-Za-z_0-9]*\.?)*[A-Za-z_][A-Za-z_0-9]*):(.+)
这个正则表达式,它可以工作,但几乎与你的正则表达式相同...在http://regex101.com上,这个正则表达式没有发生无限循环。但是,我可以确认你的正则表达式会超时! - Sebastian Simon^
和$
标记并设置g
标志,它就可以工作。 - Sebastian Simon