正则表达式匹配无限模式

时间:2019-02-27 08:00:29

标签: regex

我正在寻找将在C程序中使用的正则表达式模式以匹配以下模式:

•至少包含一位数字

•如果有多个数字,则必须用空格隔开

因此,以下内容有效(请注意,格式不受限制,并且可以包含任意数量的数字,只要它们之间用空格分隔即可):

rownames(r1) <- 1:nrow(r1)
rownames(r2) <- 1:nrow(r2)
identical(r1, r2)
##[1] TRUE

这些是无效的:

0
0 1
0 1 2
0 1 2 3

我是regex的新手,所以我的尝试未能得出正确的答案。我的尝试也匹配了无效的字符串,但这是我尝试过的:

0  
0 00
0 12 1 0
 0 
 0
0 
00
0 1 

2 个答案:

答案 0 :(得分:0)

您可以使用以空格开头的可选重复非捕获组:

^\d(?: \d)*$

Regex demo

  • ^字符串的开头
  • \d匹配一个数字(或使用[0-9]
  • (?: \d)*非捕获组,以匹配空格后跟一个数字并重复0次以上
  • $字符串结尾。

如果不支持非捕获组,则可以使用:

^[0-9]( [0-9])*$

答案 1 :(得分:0)

如果您只想匹配四个实习生,则可以使用|设置不同的条件。

^\d$|^\d\s\d$|^\d\s\d\s\d$|^\d\s\d\s\d\s\d$

Regex demo

  • ^将行的起始位置定位

  • \d匹配一个数字(等于[0-9])

  • $在行尾的位置