Java 正则表达式一个或两个特定的字母
我的正确表达是: -四位数 -符号E或R或WE或WR -三位数 表达式的第二部分应该是什么样子?我正在努力Java 正则表达式一个或两个特定的字母,java,regex,Java,Regex,我的正确表达是: -四位数 -符号E或R或WE或WR -三位数 表达式的第二部分应该是什么样子?我正在努力 ^([0-9]{4})([E,R,WE,WR]{1})([0-9]{3})$ 但第二部分不起作用。使用替换,而不是字符类: ^([0-9]{4})(E|R|WE|WR)([0-9]{3})$ 您当前拥有的内容表示匹配集合{ERW,}中的任何一个字符。但我们可以进一步简化您的模式: ^([0-9]{4})(W?(?:E|R))([0-9]{3})$ [E,R,WE,WR]{1}匹配E,
^([0-9]{4})([E,R,WE,WR]{1})([0-9]{3})$
但第二部分不起作用。使用替换,而不是字符类:
^([0-9]{4})(E|R|WE|WR)([0-9]{3})$
您当前拥有的内容表示匹配集合{ERW,}
中的任何一个字符。但我们可以进一步简化您的模式:
^([0-9]{4})(W?(?:E|R))([0-9]{3})$
[E,R,WE,WR]{1}
匹配E
,R
,W或,,因为[…]`是一个匹配括号内定义的集合/范围中单个字符的字符
您希望将W
与?
量词一起设置为可选,然后匹配E
或R
你可以用
^([0-9]{4})(W?[ER])([0-9]{3})$
^^^^^^^
看
在这里,W?
匹配1或0次出现的W
和[ER]
字符类匹配E
或R
请注意,模式中的交替组越少,模式的效率就越高