正则表达式以匹配空白和一个

时间:2019-05-29 15:01:51

标签: regex

在编写正则表达式时,我是一个初学者,我想编写能匹配以下几行的正则表达式

 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

2 个答案:

答案 0 :(得分:2)

在模式中,您使用字符类[\s1],该字符类将匹配空白字符(也将匹配换行符)或1。

如果仅需要匹配项,则可以省略捕获组。请注意,\d+匹配1个以上的数字。

您可以将模式更新为:

\bx\d+_\d+[ \t]+1\b

说明

  • \bx\d+匹配单词边界以防止x成为大单词的一部分,然后是1个以上的数字
  • _\d+匹配下划线,后跟1个以上数字
  • [ \t]+匹配1个以上的空格或制表符
  • 1\b通过单词边界匹配1个跟随者

Regex demo

答案 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