Java 正则表达式不正确匹配
嗨,我必须匹配下面这样的图案Java 正则表达式不正确匹配,java,regex,Java,Regex,嗨,我必须匹配下面这样的图案 {digit 0-1 or A}:{digit 0-1 or A}:{digit 0-1 or A}|{digit 0-1 or A}:{digit 0-1 or A}:{digit 0-1 or A}|{digit 0-1 or A}:{digit 0-1 or A}:{digit 0-1 or A} 我正在使用以下代码- String accMatrixPattern = "\\d{1,1}|[A]:\\d{1,1}|[A]:\\d{1,1}|[A]|[A]:
{digit 0-1 or A}:{digit 0-1 or A}:{digit 0-1 or A}|{digit 0-1 or A}:{digit 0-1 or A}:{digit 0-1 or A}|{digit 0-1 or A}:{digit 0-1 or A}:{digit 0-1 or A}
我正在使用以下代码-
String accMatrixPattern = "\\d{1,1}|[A]:\\d{1,1}|[A]:\\d{1,1}|[A]|[A]:\\d{1,1}|[A]";
String accMatrx = "1:A:1|0:1:1|0:1:1";
如果我只使用“\\d{1,1}|[A]
”;
它正在发挥作用,但没有结合起来
请建议如何匹配正则表达式
谢谢如果您试图在每个位置仅匹配0、1或A,您可以使用:
String accMatrixPattern = "[01A]:[01A]:[01A]\\|[01A]:[01A]:[01A]\\|[01A]:[01A]:[01A]";
如果要获取值,-1,0,1,A:
String accMatrixPattern = "([01A]|-1):([01A]|-1):([01A]|-1)\\|([01A]|-1):([01A]|-1):([01A]|-1)\\|([01A]|-1):([01A]|-1):([01A]|-1)";
这将匹配一个字符(0或1或字母a),后跟冒号,后跟另一个字符(如第一个字符),后跟冒号,后跟第三个字符(如第一个字符)
然后它需要一个|字符(注意它是转义的),后面跟着同样的东西,但是两次。问题是整个字符串上的
,因此,添加括号以指示分组方式,您的正则表达式看起来像这样:
"(\\d{1,1})|([A]:\\d{1,1})|([A]:\\d{1,1})|([A])|([A]:\\d{1,1})|([A])"
您现在可以使用一些{}
来取消冗余
"(\\d|A):(\\d|A)(:(\\d|A)\|(\\d|A):(\\d|A)){2}"
仅对于数字0-1
,使用[01A]
(如其他答案所示)可能更好
"[01A]:[01A](:[01A]\|[01A]:[01A]){2}"
?:要指定这是一个非捕获组非常感谢。它正在工作。我会在9分钟后接受答案:)@BTW如果我想采取-1对1的范围,那么如何做?谢谢你的回答。是的,我得到了,但无法放入括号;谢谢你的解释。
"(\\d|A):(\\d|A)(:(\\d|A)\|(\\d|A):(\\d|A)){2}"
"[01A]:[01A](:[01A]\|[01A]:[01A]){2}"
[01A]:[01A]:[01A](?:\\|[01A]:[01A]:[01A]){2}