扩展的正则表达式 - 想想我在搜索中可能限制性太强但不确定

时间:2013-01-28 18:29:52

标签: regex linux expression

我正在尝试找出这个扩展表达式,使用以下参数搜索特定行的txt文件:

  • 包含七位数字的行
  • 使用非数字字符前后包围,
  • 在第三个和第四个数字之间有一个或多个破折号或下划线。

这些应匹配:

x555-1212x
x555__1212x
x555-_-1212x 

但这些不匹配:

x999555-1212x
x555-1212999x x999555-1212999x
555-121x
x55-1212
5551212

这是我尝试的内容,它根据检查脚本给出了7行所需的5行

egrep '[^0-9]+[[:digit:]]{3}[-_]+[[:digit:]]{4}[^0-9]+' foo.txt

我不确定我在哪里出错了...我是否过于限制并且消除某些像Tab这样的空白字符或其他东西。有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

由于您对具有您的模式的感兴趣,因此您可以在匹配模式中使用start ^和结束$ RegEx运算符。

RegEx:^.*?(\D|^)(\d{3}[-_]+\d{4})(\D|$).*?$
在此解释演示:http://regex101.com/r/gQ0cE2