在编写正则表达式时,我是一个初学者,我想编写能匹配以下几行的正则表达式
0 x0_0 1 -228900 Result - true
0 x2_0 0 -228900 Result - false
0 x3_0 0 -128900 Result - false
实际上,我希望正则表达式在包含
时返回true。x<AnyDigit>_<AnyDigit> <WhiteSpace> 1
我写了下面的表情
x(\d+)_(\d+)[\s1]
但在以下情况下也返回true
0 x3_0 0 -128900
答案 0 :(得分:2)
在模式中,您使用字符类[\s1]
,该字符类将匹配空白字符(也将匹配换行符)或1。
如果仅需要匹配项,则可以省略捕获组。请注意,\d+
匹配1个以上的数字。
您可以将模式更新为:
\bx\d+_\d+[ \t]+1\b
说明
\bx\d+
匹配单词边界以防止x成为大单词的一部分,然后是1个以上的数字_\d+
匹配下划线,后跟1个以上数字[ \t]+
匹配1个以上的空格或制表符1\b
通过单词边界匹配1个跟随者答案 1 :(得分:1)
[\s1]
是一个字符类,它与单个字符相匹配,该字符可以是空格,也可以是数字1
。
在线
0 x3_0 0 -128900
我们有x(\d+)_(\d+)[\s1]
(在正则表达式的末尾)匹配x3_0
:
x
与自己匹配。\d+
组匹配3
_
与自己匹配\d+
组匹配0
[\s1]
与0
后的空格匹配您的要求的正则表达式的原形翻译将是
x\d_\d\s+1
与x
匹配,后跟一个数字,然后是_
,然后是一个数字,然后是一个或多个空格字符,然后是1
。