Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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 Don';我不明白正则表达式的结果_Java_Regex - Fatal编程技术网

Java Don';我不明白正则表达式的结果

Java Don';我不明白正则表达式的结果,java,regex,Java,Regex,我想知道为什么下面的正则表达式接受1 "((^G0{0,2}$)|(^T|^R0{0,2}$)){0,5}" 我希望我的正则表达式可以多次接受序列G00、G01、T00、R00。 目前,我只尝试多次使用G00、T00、R00,但我的正则表达式也接受1作为输入。 正则表达式也应该接受G、G0、T、T0、R、R0,但目标是有一个3个字符的序列。正则表达式匹配交替的零重复,匹配长度为0。(如果重复0次,则^锚定不会触发,因此它可以在任何地方匹配。)应提取重复之外的锚定。类似于 ^(?:[GTR]\d

我想知道为什么下面的正则表达式接受1

"((^G0{0,2}$)|(^T|^R0{0,2}$)){0,5}"
我希望我的正则表达式可以多次接受序列G00、G01、T00、R00。 目前,我只尝试多次使用G00、T00、R00,但我的正则表达式也接受1作为输入。
正则表达式也应该接受G、G0、T、T0、R、R0,但目标是有一个3个字符的序列。

正则表达式匹配交替的零重复,匹配长度为0。(如果重复0次,则
^
锚定不会触发,因此它可以在任何地方匹配。)应提取重复之外的锚定。类似于

^(?:[GTR]\d{0,2})+$
-                    start
 ---            --   any number of repetitions (1+) of
    -----            any of "G", "T", or "R"
         -------     0-2 digits
                  -  end

如果您的主序列是重复的,那么捕获组没有任何意义,因此我将它们剥离。

regexp匹配交替的零重复,匹配长度为0。(如果重复0次,则
^
锚定不会触发,因此它可以在任何地方匹配。)应提取重复之外的锚定。类似于

^(?:[GTR]\d{0,2})+$
-                    start
 ---            --   any number of repetitions (1+) of
    -----            any of "G", "T", or "R"
         -------     0-2 digits
                  -  end

如果您的主序列是重复的,则捕获组没有任何意义,因此我已将它们剥离。

现在,您的正则表达式匹配一个空字符串,并且将找不到任何内容

(...){0, 5} 
可以匹配
0次,从而在每个字符串上找到匹配项


您的特定需求(仅匹配这4个输入)可能需要这样的正则表达式

^(?:G01)|[GRT]00$

如果您想在每行中获得多个匹配项,请不要使用锚定:
^
$

(?:G01)|[GRT]00

现在,您的正则表达式匹配一个空字符串,将找不到任何内容

(...){0, 5} 
可以匹配
0次,从而在每个字符串上找到匹配项


您的特定需求(仅匹配这4个输入)可能需要这样的正则表达式

^(?:G01)|[GRT]00$

如果您想在每行中获得多个匹配项,请不要使用锚定:
^
$

(?:G01)|[GRT]00

我认为,因为你允许0-5次重复,任何东西都可以匹配0次。为什么不强制它至少匹配一次呢

"((^G0{0,2}$)|(^T|^R0{0,2}$))+"

我认为,因为你允许0-5次重复,任何东西都可以匹配0次。为什么不强制它至少匹配一次呢

"((^G0{0,2}$)|(^T|^R0{0,2}$))+"

你写了一个正则表达式,但你不明白?这是怎么回事?@MitchWheat,你不知道吗?有些正则表达式是只写的-Pis的
^(G00 | G01 | T00 | R00)*$
有什么问题吗?有时最简单就是最好的。这是典型的XY问题。你为什么不先解释一下你想做什么。你写了一个正则表达式,但你不明白它?这是怎么回事?@MitchWheat,你不知道吗?有些正则表达式是只写的-Pis的
^(G00 | G01 | T00 | R00)*$
有什么问题吗?有时最简单就是最好的。这是典型的XY问题。你为什么不先解释一下你想做什么。