我目前的正则表达式如下:
(?<token>#gallery (?<id>[^#]+)#)
我用它来获取一些信息。
如果是#gallery d23d23d#
它会d23d23d
像名为 的分组一样好Id
。
我需要扩展它以允许额外的参数,所以我可以抓住
#gallery d23d23d foo#
并获得d23d23d
和foo
作为单独的组?
我的正则表达式技能毫无希望,我们将不胜感激。
谢谢。
如果您想准确捕获两个组,请使用:
(?<token>#gallery\s+(?<id>[^\s#]+)\s+(?<foo>[^\s#]+)#)
该组foo
将包含第二个捕获组。请注意使用\s
来解释除空格之外的空白字符,并在\s+
组之间使用 以允许参数之间有多个空白字符。
要捕获零个、一个或两个组,请使用:
(?<token>#gallery(?:\s+(?<p1>[^\s#]+)(?:\s+(?<p2>[^\s#]+)(?:\s+(?<p3>[^\s#]+))?)?)?#)
组p1
、p2
和p3
将包含第一个出现时不需要token
匹配的组。
要捕获任意数量的组(包括无组),请使用
(?<token>#gallery(?:\s+(?<id>[^\s#]+))*#)
尽管Value
of 组id
将仅包含最后一个匹配的参数,但它的Captures
属性将包含所有其他参数。