1

我试图找出这个扩展表达式来使用以下参数在 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 或其他东西。有人有想法么?

4

1 回答 1

1

由于您对具有您的模式的感兴趣,您可以在匹配模式中使用开始^和结束正则表达式运算符。$

正则表达式:^.*?(\D|^)(\d{3}[-_]+\d{4})(\D|$).*?$
在这里解释演示:http ://regex101.com/r/gQ0cE2

于 2013-03-23T12:30:40.597 回答