![](/img/trans.png)
[英]grep - How would I match a regex using only two characters, but with each character occuring the same number of times?
[英]How to match a specific number range with a regex using grep only
例如,我的时间范围如下:
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
我想要的是仅使用grep -E'[1-2] [??]'从13到20可以获得数字吗?
请不要回答有关awk的问题,我不是在问这个问题,非常感谢
应该这样做:
^(1[1-9]|2[0-6])$
|
表示正则表达式的交替。 您可以将其视为逻辑or
。 从而:
1[3-9]|20
手段
1后跟3、4、5、6、7、8或9, 或 2后跟0
这将与指示的任何数字(13、14、15、16、17、18、19或20)匹配。
上面可能是1[1-9]|2[0-6]
,它是:
1后跟1到9 或 2跟0到6
就像波希米亚人所说的那样 该^
和$
零个宽度断言锚分别表示“字符串的开始”和“字符串的结束”。 它们的确切含义可能会根据正则表达式的味道而有所不同,但是在egrep
和其他基于行的正则表达式味道中,这就是它们的意思。 如果行中有其他字符的可能性,您将希望使用这些字符
a13b
&20-
如果您知道该数字将是该特定行上的全部数字,那么就不必严格要求它们了。
您需要将正则表达式括在双引号(“”)中。 此外,考虑到更广泛的搜索范围,如果数字大于2位,则需要在表达式中添加其他量词。 假设您要搜索范围内的数字
1865259000 to 1865361999
您的正则表达式应为:
"1865259[0-9]{3}|18652[6-9][0-9]{4}|18653[0-6][0-1][0-9]{3}"
花括号内的数字表示该模式应精确匹配该次数。 所以,
[0-9]{2}
表示2次出现0到9之间的数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.