Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式一个或两个特定的字母_Java_Regex - Fatal编程技术网

Java 正则表达式一个或两个特定的字母

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,

我的正确表达是:

-四位数

-符号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
R
,W
,因为
[…]`是一个匹配括号内定义的集合/范围中单个字符的字符

您希望将
W
量词一起设置为可选,然后匹配
E
R

你可以用

^([0-9]{4})(W?[ER])([0-9]{3})$
           ^^^^^^^

在这里,
W?
匹配1或0次出现的
W
[ER]
字符类匹配
E
R

请注意,模式中的交替组越少,模式的效率就越高