我正在寻找一个将在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])$
您可以使用以空格开头的可选重复非捕获组:
^\d(?: \d)*$
^
字符串的开头\d
匹配一个数字(或使用[0-9]
)(?: \d)*
非捕获组匹配空格后跟数字并重复0次以上$
字符串结尾。如果不支持非捕获组,您可以使用:
^[0-9]( [0-9])*$
如果你只想匹配四个分区,你可以使用|设定不同的条件。
^\d$|^\d\s\d$|^\d\s\d\s\d$|^\d\s\d\s\d\s\d$
^
定位在一条线的起点\d
匹配一个数字(等于[0-9])$
位于一条线的末端