我们有我们需要使用正则表达式解析字符串,字符串可能是两种:如何匹配字符串与可选部分?
- 有在XXXX问题
- 有在XXXX一个问题,以前的失败是YYY
的XXX可以是任何字符(如 “”)
我们怎样才能使正则表达式将匹配:
- XXXX
- “以前的失败是YYY”(记得可选配)
每一个正则表达式,我试图在第一场比赛的一切捕获(因为贪婪或过少,因为不贪)
我知道这是先进的,但也许有人已经做到了。
我们有我们需要使用正则表达式解析字符串,字符串可能是两种:如何匹配字符串与可选部分?
的XXX可以是任何字符(如 “”)
我们怎样才能使正则表达式将匹配:
每一个正则表达式,我试图在第一场比赛的一切捕获(因为贪婪或过少,因为不贪)
我知道这是先进的,但也许有人已经做到了。
^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 .*)?
为什么让第二个括号不捕获?他确实想要匹配周围的文字。 – 2009-10-12 11:05:35
由于第三个parens **是**捕获,但我怀疑他关心静态错误文本。 – 2009-10-12 11:08:44
好吧,我只是重读这个问题,重读你写的和实际理解的内容。编辑,但我仍然认为这是一个比他实际想要/需要更多的错误交流。 – 2009-10-12 11:21:18
一个Perl,使用Java,Python,.NET,JAVASCRIPT等兼容的正则表达式可能是
^There was a problem at (.*?)(, previous failures were .*)?$
,如果我正确地理解你的问题。如果您需要代码示例,请提供更多详细信息。
哪个正则表达式?哪种语言 ? – 2009-10-12 10:59:36
请参阅我的编辑了解更多。 – 2009-10-12 20:56:26