1

我目前的正则表达式如下:

(?<token>#gallery (?<id>[^#]+)#)

我用它来获取一些信息。

如果是#gallery d23d23d#

它会d23d23d像名为 的分组一样好Id

我需要扩展它以允许额外的参数,所以我可以抓住

#gallery d23d23d foo#并获得d23d23dfoo作为单独的组?

我的正则表达式技能毫无希望,我们将不胜感激。

谢谢。

4

1 回答 1

0

如果您想准确捕获两个组,请使用:

(?<token>#gallery\s+(?<id>[^\s#]+)\s+(?<foo>[^\s#]+)#)

该组foo将包含第二个捕获组。请注意使用\s来解释除空格之外的空白字符,并在\s+组之间使用 以允许参数之间有多个空白字符。

要捕获零个、一个两个组,请使用:

(?<token>#gallery(?:\s+(?<p1>[^\s#]+)(?:\s+(?<p2>[^\s#]+)(?:\s+(?<p3>[^\s#]+))?)?)?#)

p1p2p3将包含第一个出现时不需要token匹配的组。

要捕获任意数量的组(包括无组),请使用

(?<token>#gallery(?:\s+(?<id>[^\s#]+))*#)

尽管Valueof 组id将仅包含最后一个匹配的参数,但它的Captures属性将包含所有其他参数。

于 2013-04-22T23:13:47.403 回答