我可以添加带有可选字符列表的非捕获组吗?

Can I add non-capture groups with a list of optional characters?

我需要匹配具有 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),但是不行,因为[]我猜只支持字符。

如有任何帮助,我们将不胜感激。

可以匹配 Unicode 字符吗?根据您的应用程序,它可能支持 Unicode

^(?:[a-z]|\u005c[\u003f\u002a])+$

https://www.regular-expressions.info/unicode.html
本网站的片段
“Perl、PCRE、Boost 和 std::regex 不支持 \uFFFF 语法。它们使用 \x{FFFF} 代替。您可以省略大括号之间的十六进制数中的前导零。因为 \x 本身就是不是有效的正则表达式标记,\x{1234} 永远不会被混淆以匹配 \x 1234 次。它始终匹配 Unicode 代码点 U+1234。\x{1234}{5678} 将尝试匹配代码点 U+1234恰好 5678 次

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

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

Updated RegEx Demo

正则表达式详细信息:

  • ^: 开始
  • (?:[a-z]|\[*?])+:非捕获组匹配 [a-z]\?\*。匹配这个非捕获组中的 1 个或多个。
  • $: 结束