我想为没有联合的多组数字egrep正则表达式

时间:2013-06-13 17:36:04

标签: regex bash grep

这似乎是一个基本问题,但我做了相当多的搜索,但找不到答案。

说我有很多套数字

9-9-9
999个
123个
1-23
12-3
444个
55-5

我想对所有数字进行egrep,现在我可以做到这一点的方法就是建立一个egrep并将正则表达式联合起来以实现所有可能性

egrep'[0-9] [0-9 [0-9] | [0-9] [ - ] [0-9] [ - ] [0-9]'依此类推等等

有没有办法在我的正则表达式中基本上说[0-9或NULL或 - ]字符?所以我可以写一个没有联合的正则表达式[0-9] [0-9-NULL] [0-9-NULL] [0-9-NULL] [0-9-NULL] [0-9NULL]并且有它返回所有组?

所以它会搜索的小组如下所示   - 首先0-9
  - 秒0-9, - ,NULL
  - 第三个0-9, - ,NULL
  - 第四个0-9, - ,NULL
  - 第五个0-9, - ,NULL
  - 第六个0-9,NULL

感谢任何帮助。

5 个答案:

答案 0 :(得分:2)

排除'Null'部分因为我不太清楚你的意思,你使用一个简单的正则表达式来获取egrep:

[0-9](-?[0-9]){2}

-?表示{1}}出现0或1次。

-表示前一组重复两次。将其更改为{2}至少意味着一次。

答案 1 :(得分:1)

试试像

这样的正则表达式
\d[-0-9]+

破折号或0-9一次或多次

修改

或者必须以数字开头和结尾(或只有一位数

\d[-0-9]*\d|\d

修改

或总是三位数

\d{3}|\d-\d{2}|\d{2}-d

答案 2 :(得分:0)

我认为egrep '[0-9][0-9\-]*'应该给出你想要的行为。

答案 3 :(得分:0)

也许egrep '^[0-9]+(-[0-9]+){0,5}$'

  • 一些数字,后跟最多5组(连字符和数字)
  • 锚定在生产线的两端。

答案 4 :(得分:0)

非常确定(-?[0-9])+可行

它会找到一个或多个前面可能有-的数字,虽然我也不确定你的意思是什么