正则表达式:加上字符

时间:2014-07-29 08:49:09

标签: regex

最后开始学习一些正则表达式 这可能是一个愚蠢的问题,但

之间会有什么区别
tre+ 

tre 

如果找到它,它匹配,对吗?

编辑:目前正在阅读本教程:http://www.zytrax.com/tech/web/regex.htm

4 个答案:

答案 0 :(得分:4)

  • tre+匹配tr以及以下一个或多个e

  • tre匹配字符串tre

答案 1 :(得分:1)

根据您使用正则表达式的方式,差异可能很大。如果您只测试字符串是否与正则表达式匹配,则+是多余的。但是,如果您正在使用它来执行替​​换,例如preg_replace中的PHPs/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

如果你只检查字符串是否匹配,它们将匹配相同的字符串。当您有兴趣知道字符串的哪个部分匹配时,差异就开始了。例如,如果整个字符串匹配,或者您想要捕获匹配的部分。