我们需要使用正则表达式解析一个字符串,该字符串可以是:
XXX可以是任何字符(例如".")
我们如何制作匹配的正则表达式:
我试过的每一个正则表达式都在第一场比赛中捕获了所有内容(因为贪婪或太少因为不贪心)
我知道这是进步,但也许有人已经做到了.
^There was a problem at (.*?)(?:, previous failures were (.*))?$
Run Code Online (Sandbox Code Playgroud)
(.*?)意味着匹配所有内容,但尽可能少地匹配以使此匹配匹配.在^与$锚迫使正则表达式来跨越整条生产线,使其总是一致的东西.
编辑:如果你真的想要周围的错误文本,而不仅仅是"XXX"和"YYY",那么请使用以下正则表达式:
^There was a problem at (.*?)(, previous failures were .*)?$
Run Code Online (Sandbox Code Playgroud)
编辑2:根据XXX的格式,您可以使用以下内容,但前提是"XXX"中没有逗号.不幸的是,除此之外,你需要至少$锚点以确保非贪婪的比赛能够匹配.正如您在问题中所述,使用贪婪匹配根本不是一个选项(使用.至少时).
There was a problem at ([^,]*)(, previous failures were .*)?
Run Code Online (Sandbox Code Playgroud)