|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
{1,}和@的异同点
以下是学习守版、sylun兄和卡卡兄关于{1,}和@的异同点的观点后,个人进行组织与提炼,如有错误,请指正:
1、"{1,}"中的最大匹配项数为255,即前一个字符或者表达式的至少1次最多255次的匹配;而"@"没有限制(极限目前未知)。
2、在表达式没有后面后限制时,"{1,}"是贪婪匹配,而"@"是最小匹配。如"1234567890”文本中查找"[0-9]{1,}"时,它返回所有匹配项(1234567890)(共计1处),而查找"[0-9]@"时,它返回"1"(共计10处),它是最小限度匹配。
3、对于前者(即{1,}),其后可以不用其他字符限定;而后者(即@)通常是需要的,否则它是多余的。
4、如果前者(即{1,})后面用了其他字符来限定,注意限定字符不能在前者所规定的范围内,否则会导致冲突;若前后为非同类字符(比如汉字与字母、汉字与数字、字母与数字)时就可用。而@则不会受此限制。
实例1(请参考上面的第2、3点说明)
123456789 987654321 741852963 369258147 369874125 159 357 123 4546 9875
查找“[0-9]{1,}”,共找到10处
查找“[0-9]@ ”,共找到62处
理由:
因为查找代码“[0-9]@”中@后面没有限定字符,所以@是多余的,整个代码相当于[0-9]。
实例2(请参考上面的第4点说明)
中国中国我爱你,就像老鼠爱大米 老婆老婆我爱你,就像老鼠爱大米
用“[一-龥]@我爱你”可以找到2处,即“中国中国我爱你”和“老婆老婆我爱你”;
用“[一-龥]{1,}我爱你”则找不到匹配的项
理由:
“我爱你”这三个汉字均在“一-龥”范围内
实例3(请参考上面的第2点说明)
①1234567890--1234567890--1234567890--1234567890--1234567890
查找:“[1-4]{1,}”,替换为:“Y”:的结果:(共替换5处)
Y567890--Y567890--Y567890--Y567890--Y567890
查找:“[1-4]@”,替换为:“Y”的结果:(共替换20处)
YYYY567890--YYYY567890--“YYYY567890--YYYY567890--YYYY567890
理由:
{1,}"是贪婪匹配,查找:“[1-4]{1,}”,它返回所有匹配项,即查找范围中的连续字符(一个或多个)作为整体后,也就是“1234567890--1234567890--1234567890--1234567890—1234567890”中的蓝色数字部分将其替换为“Y”;
而"@"是最小匹配,即查找中的所有范围内的字符作为个体后(本例即为将“1234567890--1234567890--1234567890--1234567890—1234567890”这些数字作为个体),将其替换为“Y”
②1324657890--2456789031--2516748930--1345672890—1356278904
查找:“[1-4]{1,}”,替换为:“Y”:的结果:(共替换12处)
Y657890--Y567890Y--Y5Y67Y89Y0--Y567Y890--Y56Y7890Y
查找:“[1-4]@”,替换为:“Y”的结果:(共替换20处)
YYYY657890--YY567890YY--Y5Y67Y89Y0--YYY567Y890--YY56Y7890Y
理由:
{1,}"是贪婪匹配,查找:“[1-4]{1,}”, 它返回所有匹配项,即查找范围的连续数字(一个或多个)作为整体后,将其替换为“Y”;即“1324657890--2456789031--2516748930--1345672890--1356278904”中的蓝色部分的数字作为个体后,将其替换为“Y”;
而"@"是最小匹配,即查找中的所有范围内的字符作为个体后(本例即为将“1324657890--2456789031--2516748930--1345672890--1356278904”这些数字作为个体),分别替换为“Y”
[ 本帖最后由 tangqingfu 于 2009-9-5 00:01 编辑 ] |
评分
-
2
查看全部评分
-
|