1

我需要做的是检查一个字符串,这就是我到目前为止所拥有的

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 以及在其中任何位置执行 101 的 D,即使它的 111000101000 或其他内容

我的杀手锏是 ("^101$") 语法,我可以使用帮助

4

3 回答 3

2

你不需要^and $with matches(正如我在评论中所说)。这是我的看法:

乙: "[01]+101"
丙: "101[01]+"
丁: "[01]*101[01]*"


回想一下,这X+意味着X 一次或多次,而这X*意味着X 零次或多次

此外(对于A),如果您只想“匹配” "101",您可能需要考虑简单地使用equals,即numLine.equals("101").

于 2012-12-06T02:34:39.607 回答
1

你想要的四个正则表达式非常相似:

如您所见,要完全匹配“101”(A),请使用101(如评论中所述,您不需要使用^and $

要匹配以“101”(B) 结尾的任何内容,请使用[01]*101.

要匹配以“101”(C) 开头的任何内容,请使用101[01]*.

要匹配包含“101”(D) 的任何内容,请使用[01]*101[01]*.

在所有情况下,[01]*表示集合 {0,1} 中任何字符的 0 个或多个实例,因此每个都查找字符串的其余部分(如果适用),仅使用and101填写。01

于 2012-12-06T02:34:47.840 回答
0

我不确定您到底想做什么,但我了解您想要正则表达式的目的,所以我将简单地发布。

A -^101$匹配101整个字符串。

B -^101匹配101字符串的开头。添加[10]*之后,包括01之后。^101[10]*

C -101$匹配101字符串的末尾。在开头添加[10]*^以包括前面的01[10]*101$

D -101匹配101任何地方。

于 2012-12-06T02:40:11.170 回答