有没有办法在正则表达式中的字符集之间进行选择?[复制]

Is there a way to choose between sets of characters in regex? [duplicate]

提问人:NYoung 提问时间:5/16/2019 更新时间:5/22/2019 访问量:98

问:

有没有办法像这样只匹配垫子和mis?

我已经在正则表达式测试器中尝试过,但它不起作用。为什么不呢?方括号只带一个字符吗?

m[(?:is)(?:at)]
与正则表达式 语言无关

评论

0赞 Pushpesh Kumar Rajwanshi 5/16/2019
你可能想把它写成,是的,你是正确的假设,方括号代表一个字符集,里面的任何内容都是允许的字符集,一个字符集只代表一个字符。\bm(?:is|at)\b

答:

0赞 vlad_tepesch 5/17/2019 #1

方括号定义字符集。

\d例如,是[0123456789]

如果你想有替代品,你必须使用 ,就像匹配任何一个词一样。|this|that

如果备选项是子模式,则可以使用普通括号对它们进行分组。

like (this|that)matches 和'like this''like that'

所以匹配,它可以是:'mis''mat'

mis|mat

或者,如果您想要通用前缀

m(is|at)

如果您不想要捕获

m(?:is|at)

(但在这种情况下,您可以使用第一个可读性更好的建议)