如何简化egrep中匹配重复数字标识符的正则表达式?
简化重复模式的egrep正则表达式
嘿,这个需求很典型!你完全可以通过分组+重复量词来简化你的正则表达式,让它更易读也更简洁。
解决方案:使用扩展正则表达式(推荐)
egrep支持扩展正则语法(通过-E选项启用),你可以把重复的模式用括号()分组,然后用{n}指定重复次数。针对你的场景,简化后的正则如下:
egrep -E '([0-9]{4}[[:blank:]]){5}[0-9]{2}'
语法解释:
([0-9]{4}[[:blank:]]):将"4位数字+空白字符"的模式打包成一个分组{5}:表示这个分组精确重复5次,正好对应你原来的5组4位数字[0-9]{2}:最后跟上那个2位数字的模式,和原需求完全匹配
如果你不想用扩展正则(基础正则写法)
如果出于某些原因不想加-E选项,需要对括号进行转义(基础正则中括号是特殊字符,要转义才会被当作分组):
egrep '([0-9]{4}[[:blank:]])\{5\}[0-9]{2}'
不过更推荐第一种扩展正则的写法,它的可读性更强,也更符合现代正则的使用习惯。
内容的提问来源于stack exchange,提问作者Allan
相关产品推荐
相关产品推荐

