如何使用正则表达式匹配字母的任意组合?

2022-09-04 06:56:09

我如何以任意组合匹配字母a,b,c一次,并改变长度,如下所示:

表达式应与以下情况匹配:

abc
bc
a
b
bca

但不应与以下匹配:

abz
aab
cc
x

答案 1

使用正则表达式模式

\b(?!\w*(\w)\w*\1)[abc]+\b

您可以将此模式与任何设置和大小一起使用,只需替换为所需的集合即可...[abc]


示例

enter image description here

(以上输出来自 myregextester)


答案 2
^(?=([^a]*a?[^a]*)$)(?=([^b]*b?[^b]*)$)(?=([^c]*c?[^c]*)$)[abc]{1,3}$

适用于前瞻

它以三种变体形式包含此模式:(?=([^a]*a?[^a]*)$)

它说:从这里(开始)到结束,最多需要有一个。a

结合前瞻反向参考

^([abc])((?!\1)([abc])((?!\1)(?!\3)[abc])?)?$