Java Don';我不明白正则表达式的结果
我想知道为什么下面的正则表达式接受1Java 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
"((^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问题。你为什么不先解释一下你想做什么。