这似乎是一个基本问题,但我做了相当多的搜索,但找不到答案。
说我有很多套数字
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
感谢任何帮助。
答案 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}$'
答案 4 :(得分:0)
非常确定(-?[0-9])+
可行
它会找到一个或多个前面可能有-
的数字,虽然我也不确定你的意思是什么