perl模式匹配

“[]意味着匹配一组字符中的一个,如/a[0123456789]c/将匹配a加数字加c的字符串。与+联合使用例:/d[eE]+f/匹配def、dEf、deef、dEdf、dEEEeeeEef等。^表示除其之外的所有字符,如:/d[^deE]f/匹配d加非e字符加f的字符串。”这是一个教程的原话
怎么/d[eE]+f/匹配dEdf和dEEEeeeEef,这是怎么得来的,+不是代表一个或多个相同字符码?
/d[^deE]f/不是应该是匹配d加非“deE”字符加f的字符吗?是教程错了还是就是这样的,麻烦知道的解释下

/d[eE]+f/匹配dEdf和dEEEeeeEef,+表示重复它前面的那个字符,这个表达式里面+前面的是[eE],是e或者E,它们两个的任意组合都可以匹配。所以,你把+理解为多个相同是错的,正确的是重复它前面的字符一次或者多次。

/d[^deE]f/匹配d加非e字符加f的字符串,例如可以匹配daf、dbf、dXf,但是不能匹配ddf、def、dEf。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-16
试了一下,第一种的“dEdf”是匹配不上的。而第二种的就是匹配的d加非“d”、非“E”和非“e”字符加f的字符,教程应该是有些问题。
第2个回答  2020-04-14
\/
代表匹配字段里面要有/
\.
代表匹配字段里面要有.
[0-9]+
代表任意的数字集合(至少也要有1个数字)
$
代表是字符串的结尾,就是说fid后面不能再有东西
整个就是匹配
XXX/chtb_数字.fid

用来匹配某个文件夹下的chtb_数字.fid文件的
相似回答