我正在尝试构建一个带有可选捕获组的 python 正则表达式。我的正则表达式适用于大多数情况,但未能将匹配项放在测试用例之一中的正确组中。
我想匹配和捕获以下情况:
命名空间::工具名称::1.0.1
命名空间::工具名称
工具名称::1.0.1
工具名称
这是我到目前为止的正则表达式:
(?:(?P<namespace>^[^:]+)::)?(?P<name>[^:]*)(?:::(?P<version>[0-9\.]+))?
这个正则表达式适用于我所有的 4 个测试用例,但我遇到的问题是在案例 3 中,tool_name 在命名空间组中被捕获,而 1.0.1 在名称组中被捕获。我希望它们分别被捕获在正确的组、名称和版本中
谢谢
天涯尽头无女友
相关分类