Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 我想用正则表达式来表示多组没有并集的数_Regex_Bash_Grep - Fatal编程技术网

Regex 我想用正则表达式来表示多组没有并集的数

Regex 我想用正则表达式来表示多组没有并集的数,regex,bash,grep,Regex,Bash,Grep,这似乎是一个基本的问题,但我做了大量的搜索,没有找到答案 假设我有很多组数字 9-9-9 999 123 1-23 12-3 444 55-5 我想对所有的数字进行egrep,现在我可以做的一个方法是建立一个egrep并为所有的可能性联合正则表达式 白鹭“[0-9][0-9[0-9]|[0-9][-][0-9][-][0-9]”等等 有没有一种方法可以在我的正则表达式中本质上说[0-9或NULL或-]个字符?这样我就可以编写一个正则表达式,而不需要像这样的并集[0-9][0-9-NULL][0-

这似乎是一个基本的问题,但我做了大量的搜索,没有找到答案

假设我有很多组数字

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

我想对所有的数字进行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-9NULL],并让它返回所有组

因此,它将搜索的组如下所示
-前0-9个
-第二个0-9,-,空
-第三个0-9,-,空
-第四个0-9,-,空
-第五个0-9,-,空
-第六个0-9,空

非常感谢您的帮助。

请尝试类似regex的

\d[-0-9]+
破折号或0-9一次或多次

编辑

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

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

或者它总是三位数

\d{3}|\d-\d{2}|\d{2}-d
试试像这样的正则表达式

\d[-0-9]+
破折号或0-9一次或多次

编辑

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

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

或者它总是三位数

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

排除“Null”部分,因为我不太清楚您的意思,您使用一个简单的正则表达式来表示egrep:

[0-9](-?[0-9]){2}
-?
表示出现0或1次
-


{2}
表示前面的组被重复了两次。将其更改为
+
表示至少重复一次。

排除“Null”部分,因为我不太清楚这是什么意思,您可以对egrep使用一个简单的正则表达式:

[0-9](-?[0-9]){2}
-?
表示出现0或1次
-


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

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

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

也许
egrep 0-9][0-9][0,5}>

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

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

  • 一些数字,后跟最多5组(连字符和数字)
  • 锚定在线路的两端
非常肯定
(?[0-9])+
会起作用

它将找到一个或多个可能前面有
-
的数字,尽管我也不确定您所说的NULL是什么意思非常肯定
([0-9])+
会起作用


它会找到一个或多个数字,前面可能有一个
-
,尽管我也不确定NULL是什么意思你确切地说“NULL”是什么意思?你确切地说“NULL”是什么意思?它将匹配以破折号结尾的“数字”(例如7),而匹配以破折号结尾的“数字”(例如7)好的,那只是他对“-”的转义字符,如果我对文档中的所有数字感兴趣,那就行了,但是我只想要有特定图案的数字,比如说有一个数字是88-1231-293742,我不想要。好的,那只是他对“-”的转义字符,如果我感兴趣,那就行了文件中的所有数字,但我只想要有特定模式的数字,比如说有一个数字是88-1231-293742,我不想要。这正是我想要的,但不知道如何表达。我的意思是说“-”或什么都不说。这正是我想要的,但不知道如何表达。我的意思是不o说'-'或什么也不说。