在正则表达式中缺少可选组后,如何匹配可选组

时间:2014-03-13 01:33:59

标签: c# regex

免责声明:正则表达式让我感到愚蠢。我知道我不擅长,不需要告诉我。

我有这个正则表达式

tags/?(?<tagName>[a-z0-9\\-]*

匹配:

  • &#34;标记&#34;
  • &#34;标记/&#34;
  • &#34;标签/标记名&#34;

这就是我想要的,但它也匹配&#34; tags123&#34;我不想要的。

我确实看到了这个问题:我已经选择了正斜杠,我需要在&#34;标签&#34;上进行匹配,但我不知道怎么做,以便下一组被取消资格来自匹配,如果缺少前一个可选组(不确定它是放置它的最佳方式)。

对此有任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

使用可选的非捕获组(?:...)?

tags(?:/(?<tagName>[a-z0-9-]*))?

请注意,使用此语法,斜杠在非捕获组中不再是可选的。

答案 1 :(得分:0)

您可以使用:

\btags(?:/(?<tagName>[a-z0-9-]*))?\b

Online Demo