英文:
Regex to match three non-continuous digits where digits needs to be either 0 or 1
问题
例如:
000=true
111=true
02010=true
1011=true
00101=true
12001=false
22200=false
Pattern pattern = Pattern.compile(".*0.*0.*0 || .*1.*1.*1");
Matcher matcher = pattern.matches("00110");
这个模式会在字符串为"2"的情况下返回true;
英文:
For Eg:
000=true
111=true
02010=true
1011=true
00101=true
12001=false
22200=false
Pattern pattern=Patter.complie(".*0.*0.*0 || .*1.*1.*1");
Matcher matcher=pattern.matches("00110");
This pattern is returning true either my string is "2";
答案1
得分: 4
我会选择:
.*([01])(.*){2}.*
在 在线演示 中查看。
该正则表达式使用 反向引用 \1
来引用捕获在第1组中的字符进行重复匹配。
根据需要,可以将更多字符添加到字符类中,例如要在允许的列表中包含字符 "2"
和 "3"
,请使用 [0123]
或简单地使用 [0-3]
。
英文:
I would just go with:
.*([01])(.*){2}.*
See live demo.
The uses a back reference \1
to the character captured in group 1 for the repeat.
Add as many characters to the character class as you like, eg to include the characters "2"
and "3"
in the allowed list, use [0123]
, or simply [0-3]
答案2
得分: 1
正则表达式中不存在 ||
这样的运算符,只有 |
,最好将选项用括号括起来。另外,表达式中的空格也会被匹配上。正确的模式是:(.*0.*0.*0.*)|(.*1.*1.*1.*)
。建议使用 Regex101 来尝试正则表达式。
英文:
There is no such operator ||
in RegEx, only |
, and it is good to wrap your options in parentheses. Also, the spaces in your expression are matched too. The right pattern is: (.*0.*0.*0.*)|(.*1.*1.*1.*)
.
P.S. I suggest using Regex101 for trying out regular expressions.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论