首页 > 解决方案 > 我可以添加带有可选字符列表的非捕获组吗?

问题描述

我需要匹配具有或的字符串a-z,例如:\?\*

abcd
abc\?d # mush have a \ in front of a ?
abc\*d
ab\?c\*d

并排除其他标点前面没有\的字符串,例如

abc?d
abc*d
ab?c*d

我试过[a-z(?:\\\?)(?:\\\*)]+https://regex101.com/r/5yYBDl/1),但它不起作用,因为[]我猜只支持字符。

任何帮助,将不胜感激。

标签: pythonregexre

解决方案


您可以将此正则表达式与交替和锚点一起使用:

^(?:[a-z]|\\[*?])+$

更新的 RegEx 演示

正则表达式详细信息:

  • ^: 开始
  • (?:[a-z]|\\[*?])+: 非捕获组以匹配[a-z]or\?\*. 匹配 1 个或多个此非捕获组。
  • $: 结尾

推荐阅读