正则表达式帮助搜索字符串以进行匹配

时间:2012-12-06 02:27:06

标签: java regex

我需要做的是检查字符串,这是我目前所拥有的

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 $”)语法,我可以使用

的帮助

3 个答案:

答案 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,其余字符串将填写为适用只有01

答案 2 :(得分:0)

我不确定你想要做什么,但我明白你想要什么正则表达式,所以我只是发布它。

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

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

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

D - 101在任何地方匹配101