正则表达式匹配无限模式

问题描述 投票:-1回答:2

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

•至少包含一位数字

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

因此,以下是有效的(请注意,模式不受限制,只要它们用空格分隔,就可以包含任意数量的数字):

0
0 1
0 1 2
0 1 2 3

这些都是无效的:

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

我对正则表达式有点新意,所以我的尝试没有得到正确答案。我的尝试也匹配了无效的字符串,但这是我尝试过的:

^(([0-9])(\s))+||([0-9])$
regex
2个回答
0
投票

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

^\d(?: \d)*$

Regex demo

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

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

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

0
投票

如果你只想匹配四个分区,你可以使用|设定不同的条件。

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

Regex demo

  • ^定位在一条线的起点
  • \d匹配一个数字(等于[0-9])
  • $位于一条线的末端
© www.soinside.com 2019 - 2024. All rights reserved.