我们需要使用正则表达式解析一个字符串,字符串可以是:
XXX可以是任何字符(例如“。”)
我们如何制作匹配的正则表达式:
我尝试过的每一个正则表达式都会在第一场比赛中捕获所有内容(因为贪婪或太少因为不贪心)
我知道这是进步,但也许有人已经做到了。
答案 0 :(得分:6)
^There was a problem at (.*?)(?:, previous failures were (.*))?$
(.*?)
表示匹配所有内容,但匹配尽可能少以使此匹配匹配。 ^
和$
锚点强制正则表达式跨越整行,以便它始终匹配。
编辑:如果你真的想要周围的错误文本,而不仅仅是“XXX”和“YYY”,那么请使用以下正则表达式:
^There was a problem at (.*?)(, previous failures were .*)?$
编辑2 :根据XXX的格式,您可以使用以下内容,但前提是“XXX”中没有逗号。不幸的是,除此之外,你需要至少使用$
锚来确保非贪婪的匹配符合某些东西。正如您在问题中所述,使用贪婪匹配根本不是一种选择(至少使用.
)。
There was a problem at ([^,]*)(, previous failures were .*)?
答案 1 :(得分:2)
Perl,Java,Python,.NET,JavaScript等兼容的正则表达式可能
^There was a problem at (.*?)(, previous failures were .*)?$
如果我理解你的问题。如果您需要代码示例,请提供更多详细信息。