繁体   English   中英

捕获组与量词Regexp匹配

[英]Capture groups match with quantifier Regexp

我是regex世界的新手,我需要捕获一些不同类型的字符串。

顺便说一句,请提出更愚蠢的方式来捕获这样的字符串。 n =任何正数(不相同)

|n||0||0||0||0|
|n||n||0||0||0|
|n||n||n||0||0|
|n||n||n||n||0|
|n||n||n||n||n|

我试图使用这样的正则表达式来捕获字符串的第一和第二类型

^\|([1-9]+)\|(?:([1-9]+)\|){4}|(?:(0)\|){4}$

零应视为单独的字符,我需要捕获每个数字或零

现在的问题是,它仅捕获第一个匹配的字符和最后一个匹配的字符

但不捕获其他数字

请提供此正则表达式帮助,如果有人提供更多无关紧要的方法,那将非常有用(最后,我必须编写4个ors语句来捕获我的字符串类型)

谢谢

我不确定这是否足以满足您的需求:

\|(?:(0)|([0-9]+))\|

https://regex101.com/r/fX5xI4/2

现在,您必须将匹配项分成x个元素组,其中x是列数。 我想那应该没问题。

怎么样:

^(?:\|[1-9][0-9]*\|){1,5}(?:\|0\|){0,4}$

说明:

^               : start of line
  (?:           : non capture group
   \|           : a pipe character
   [1-9][0-9]*  : a positive number of any length
   \|           : a pipe character
  ){1,5}        : the group is repeated 1 to 5 times
  (?:           : non capture group
    \|0\|       : a zero with pipe arround it
  ){0,4}        : group is repeated 0 to 4 times.
$               : end of line

这将匹配您提供的所有示例。 一些正数后跟零。

您可以先验证行,然后使用\\d+查找全部

验证: '~^\\|[1-9]\\d*\\|(?:\\|(?:[1-9]\\d*|0+(?!\\|\\|[1-9]))\\|){4}$~'

 ^                             # BOS
 \|
 [1-9] \d*                     # Any numbers that start with non-zero
 \|

 (?:
      \|
      (?:
           [1-9] \d*                     # Any numbers that start with non-zero
        |                              # or,
           0+                            # Any numbers with all zeros
           (?! \|\| [1-9] )              # Not followed by a non-zero
      )
      \|
 ){4}
 $                             # EOS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM