我需要做的是检查字符串,这是我目前所拥有的
System.out.print("Please enter a string of 1's and 0s :");
numLine = input.next();
if (numLine.matches("^101$")) {
System.out.print("A is true");
} else if (numLine.matches("^\\d[01]+101$ ")){
System.out.print("B is true");
} else {
System.out.println("no");
}
代码的第一部分^ 101 $工作并打印出A是真的 对于B,我想要做的只是接受1和0并返回,如果它以101结束 我希望C在开始时做101并接受尽可能多的1和0 和D在任何地方都做101,即使它是111000101000或其他东西
对我而言,杀手是(“^ 101 $”)语法,我可以使用
的帮助答案 0 :(得分:2)
您^
和$
matches
不需要(正如我在评论中所说)。这是我看到它的方式:
B: "[01]+101"
C: "101[01]+"
D: "[01]*101[01]*"
回想一下,X+
表示X
一次或多次,X*
表示X
零次或多次
另外(对于 A ),如果您只想“匹配”"101"
,您可能需要考虑仅使用equals
,即numLine.equals("101")
答案 1 :(得分:1)
您想要的四个正则表达式非常相似:
要准确匹配“101”(A),请使用101
(如评论中所述,您不需要使用^
和$
。< / p>
要匹配任何以“101”(B)结尾的内容,请使用[01]*101
。
要匹配任何以“101”(C)开头的内容,请使用101[01]*
。
要匹配包含“101”(D)的任何内容,请使用[01]*101[01]*
。
在所有情况下,[01]*
表示集合{0,1}中任意字符的0个或多个实例,因此每个实例都会查找101
,其余字符串将填写为适用只有0
和1
。
答案 2 :(得分:0)
我不确定你想要做什么,但我明白你想要什么正则表达式,所以我只是发布它。
A - ^101$
匹配101
作为整个字符串。
B - ^101
在字符串的开头匹配101
。之后添加[10]*
,之后加入0
和1
。 ^101[10]*
C - 101$
在字符串末尾匹配101
。在开头添加[10]*^
以包含前0
和1
。 [10]*101$
D - 101
在任何地方匹配101
。