[英]C# regex split for A non-zero digit followed by an arbitrary number of zero
[英]Regex: non-zero number followed by one or more spaces followed by non-zero number
尝试匹配格式为[1-9],空格,[1-9]的用户输入
所以
1 1应该通过
1 0应该失败
new Regex(@"^[1-9]+\s+\d+").IsMatch(input) //works but allows 0 for the 2nd number
new Regex(@"^[1-9]+\s+\[1-9]+").IsMatch(input) //does not work for some reason
我觉得我缺少一些超级基础知识,但找不到答案。
您的两个正则表达式均无法正常工作。 ^[1-9]+\\s+\\d+
模式匹配从1
到9
1+个数字,然后匹配1+个空格,然后匹配可以随便跟随的任意1+个数字,任意数量的任何字符。 ^[1-9]+\\s+\\[1-9]+
模式包含转义的[
,而不是将1
到9
任何1+数字与[1-9]
匹配,您的\\[1-9]+
与[
,然后是1-9
子字符串,然后是1+ ]
字符。
如果计划匹配由单个非零数字组成的字符串,这些数字由1+空格分隔,则使用@"^[1-9]\\s+[1-9]$"
。 请参阅此正则表达式演示 。
如果您计划匹配一个字符串,该字符串包含两个不以0
开头且以1个或多个空格字符分隔的数字块,请使用
@"^[1-9][0-9]*\s+[1-9][0-9]*$"
参见regex演示 。 请注意, $
是字符串锚的结尾,它后面几乎不允许包含任何字符(它的确允许在字符串末尾使用\\n
,因此,您可能要使用\\z
而不是$
)。
图案细节
^
-字符串的开头 [1-9]
-一个1
, 2
... 9
[0-9]*
-零个或多个数字 \\s+
-1+空格字符 [1-9][0-9]*
-参见上文 $
/ \\z
字符串结尾/字符串锚点的结尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.