好吧,我一直使用正则表达式取得了很好的成功,但我遇到了麻烦。
我想要区分两种字符串模式:
AAA(CR)(LF)*
vs
AAA BBBBB(CR)(LF)*
如果A是字母,B可以是除(CR)
/ (LF)
以外的任何字符,而(CR)
/ (LF)
是回车和换行(即, 0h0D/0h0A
)。
我尝试过以下模式:
"[A-Z ]+.+\x0D\x0A\*"
但是,加重的是,这符合上述两种模式! .+
不应该阻止第一个模式匹配吗?据我所知,+
是以前令牌的一个或多个的贪婪匹配......我哪里出错?
谢谢,
布赖恩
答案 0 :(得分:4)
您的正则表达式与AAA(CR)(LF)
匹配,因为第一个两个字符与[A-Z ]+
匹配,然后第三个A匹配.+
。
虽然+
表示贪婪匹配,但在找到AAA
并发现表达式的其余部分无法匹配后,正则表达式引擎将回溯。因此它尝试使用AA
并发现可以匹配字符串的其余部分。
答案 1 :(得分:1)
除非我误解了......
"[A-Z]+\x0D\x0A\*"
或
"[A-Z]+ .+\x0D\x0A\*"