我目前的正则表达式如下:
(?<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#]+))*#)
尽管Valueof 组id将仅包含最后一个匹配的参数,但它的Captures属性将包含所有其他参数。