最后开始学习一些正则表达式 这可能是一个愚蠢的问题,但
之间会有什么区别tre+
和
tre
如果找到它,它匹配,对吗?
编辑:目前正在阅读本教程:http://www.zytrax.com/tech/web/regex.htm
答案 0 :(得分:4)
tre+
匹配tr
以及以下一个或多个e
。
tre
匹配字符串tre
答案 1 :(得分:1)
根据您使用正则表达式的方式,差异可能很大。如果您只测试字符串是否与正则表达式匹配,则+
是多余的。但是,如果您正在使用它来执行替换,例如preg_replace
中的PHP
或s/regexp/replacement/
或Perl
中的sed
使用+
将导致它替换最长匹配的子字符串。
例如,如果您的输入字符串是:
Cut down the trees
你做了:
s/tre/foo/
结果将是:
Cut down the fooes
但如果你这样做:
s/tre+/foo/
结果将是:
Cut down the foos
答案 2 :(得分:1)
你没有说出你正在使用哪种正则表达式。
BRE (基本正则表达式):
tre+ matches string: "tre+"
tre matches string: "tre"
ERE / PCRE (扩展正则表达式/ Perl兼容正则表达式):Avinash已经回答了它。
tre+ matches string: "tre" or "tree" or "treeeeeee"
tre matches string: "tre"
答案 3 :(得分:1)
tre+
将tr
与一个或多个a
匹配。 tre
仅匹配tre
。
如果你只检查字符串是否匹配,它们将匹配相同的字符串。当您有兴趣知道字符串的哪个部分匹配时,差异就开始了。例如,如果整个字符串匹配,或者您想要捕获匹配的部分。