我可以添加带有可选字符列表的非捕获组吗?
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]|\[*?])+$
正则表达式详细信息:
^
: 开始
(?:[a-z]|\[*?])+
:非捕获组匹配 [a-z]
或 \?
或 \*
。匹配这个非捕获组中的 1 个或多个。
$
: 结束
我需要匹配具有 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]|\[*?])+$
正则表达式详细信息:
^
: 开始(?:[a-z]|\[*?])+
:非捕获组匹配[a-z]
或\?
或\*
。匹配这个非捕获组中的 1 个或多个。$
: 结束