如何不匹配正则表达式中缺失的可选组后面的可选组

本文关键字:不匹配 正则表达式 | 更新日期: 2023-09-27 17:49:45

免责声明:Regex让我觉得自己很蠢。我知道我不擅长,不用告诉我。

我有这个正则表达式
tags/?(?<tagName>[a-z0-9''-]*

匹配:

  • "标签"
  • "标签/"
  • "标签/tagname"

这是我想要的,但它也匹配"tags123"这是我不想要的。

我确实看到了这个问题:我已经使正斜杠可选,我需要在"标签"上匹配,但我不知道如何使它使下一组失去匹配资格,如果前一个可选组缺失(不确定这是最好的方法)。

感谢您的帮助

如何不匹配正则表达式中缺失的可选组后面的可选组

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

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

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

您可以使用:

'btags(?:/(?<tagName>[a-z0-9-]*))?'b
<<h3>在线演示/h3>