Java中用于匹配C1010或L1 2 6 2或R14 1 8 3的正则表达式

Java中用于匹配C1010或L1 2 6 2或R14 1 8 3的正则表达式,java,regex,Java,Regex,我需要在Java中创建正则表达式的帮助,以便将命令提示符中的输入仅与这四种格式中的任何一种匹配 C 10 10 L 1 2 6 2 R 14 1 8 3 Q C后面可以跟在空格之后的任意两个正整数,并且在它们之间有空格。 L&R后面可以跟四个正整数,它们之间有空格 对于我的应用程序来说,除这四项之外的任何内容都是错误的。 到目前为止,我已经做到了这一点 line.matches("[CLRQ]?\\s"); 您可以使用以下正则表达式: C(?:\s\d+){2}|[LR](?:\s\d+

我需要在Java中创建正则表达式的帮助,以便将命令提示符中的输入仅与这四种格式中的任何一种匹配

C 10 10 
L 1 2 6 2 
R 14 1 8 3
Q

C后面可以跟在空格之后的任意两个正整数,并且在它们之间有空格。 L&R后面可以跟四个正整数,它们之间有空格

对于我的应用程序来说,除这四项之外的任何内容都是错误的。 到目前为止,我已经做到了这一点

line.matches("[CLRQ]?\\s");

您可以使用以下正则表达式:

C(?:\s\d+){2}|[LR](?:\s\d+){4}|Q
描述:

演示:

输出:

Match 1
Full match  0-7 `C 10 10`
Match 2
Full match  9-18    `L 1 2 6 2`
Group 1.    16-18   ` 2`
Match 3
Full match  20-30   `R 14 1 8 3`
Group 1.    28-30   ` 3`
Match 4
Full match  31-32   `Q`
JShell输出:

jshell> Pattern patter = Pattern.compile("C(?:\\s\\d+){2}|[LR](\\s\\d+){4}|Q")
patter ==> C(?:\s\d+){2}|[LR](\s\d+){4}|Q
jshell> Matcher matcher = patter.matcher("C 10 10");
matcher ==> java.util.regex.Matcher[pattern=C(?:\s\d+){2}|[LR ... }|Q region=0,7 lastmatch=]
jshell> matcher.matches()
$9 ==> true
jshell> Matcher matcher = patter.matcher("L 1 2 6 2");
matcher ==> java.util.regex.Matcher[pattern=C(?:\s\d+){2}|[LR ... }|Q region=0,9 lastmatch=]
jshell> matcher.matches()
$11 ==> true
jshell> Matcher matcher = patter.matcher("R 14 1 8 3");
matcher ==> java.util.regex.Matcher[pattern=C(?:\s\d+){2}|[LR ... |Q region=0,10 lastmatch=]
jshell> matcher.matches()
$14 ==> true
jshell> Matcher matcher = patter.matcher("Q");
matcher ==> java.util.regex.Matcher[pattern=C(?:\s\d+){2}|[LR ... }|Q region=0,1 lastmatch=]
jshell> matcher.matches()
$15 ==> true

我后面能跟10吗,或者后面的数字模式是行首字母特有的吗?这四种格式是什么意思?C后面可以跟任意两个正整数,两个正整数之间有空格。L&R后面可以跟四个正整数,两个正整数之间有空格问题没有多少人愿意在评论中寻求澄清。
jshell> Pattern patter = Pattern.compile("C(?:\\s\\d+){2}|[LR](\\s\\d+){4}|Q")
patter ==> C(?:\s\d+){2}|[LR](\s\d+){4}|Q
jshell> Matcher matcher = patter.matcher("C 10 10");
matcher ==> java.util.regex.Matcher[pattern=C(?:\s\d+){2}|[LR ... }|Q region=0,7 lastmatch=]
jshell> matcher.matches()
$9 ==> true
jshell> Matcher matcher = patter.matcher("L 1 2 6 2");
matcher ==> java.util.regex.Matcher[pattern=C(?:\s\d+){2}|[LR ... }|Q region=0,9 lastmatch=]
jshell> matcher.matches()
$11 ==> true
jshell> Matcher matcher = patter.matcher("R 14 1 8 3");
matcher ==> java.util.regex.Matcher[pattern=C(?:\s\d+){2}|[LR ... |Q region=0,10 lastmatch=]
jshell> matcher.matches()
$14 ==> true
jshell> Matcher matcher = patter.matcher("Q");
matcher ==> java.util.regex.Matcher[pattern=C(?:\s\d+){2}|[LR ... }|Q region=0,1 lastmatch=]
jshell> matcher.matches()
$15 ==> true