Java 关于搜索字符串以查找匹配项的正则表达式帮助
我需要做的是检查一个字符串,这就是我到目前为止所做的Java 关于搜索字符串以查找匹配项的正则表达式帮助,java,regex,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 i
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$”)语法,我可以在这方面使用帮助,你不需要
^
和$
与匹配(正如我在评论中所说)。我是这样看的:
B:“[01]+101”
C:“101[01]+”
D:“[01]*101[01]*”
回想一下X+
表示X
一次或多次,而X*
表示X
零次或多次
<>也(对于<强> a /强>),如果您想“匹配”仅<代码>“101”<代码>,您可能需要简单地考虑使用<代码>等于/>代码>,即<代码> NoMLIN。等于(“101”)< /代码> .< /P> < P>您想要的四个正则表达式非常相似:
要精确匹配“101”(A),如您所见,请使用101
(如注释中所述,您不需要使用^
和$
)
要匹配以“101”(B)结尾的任何内容,请使用[01]*101
要匹配以“101”(C)开头的任何内容,请使用101[01]*
要匹配任何包含“101”(D)的内容,请使用[01]*101[01]*
在所有情况下,[01]*
表示集合{0,1}中任何字符的0个或多个实例,所以每一个都会查找101
,剩下的字符串只填写0
和1
,我不确定您到底想做什么,但我理解您想要regex做什么,所以我将简单地发布它
A-^101$
将101
作为整个字符串进行匹配
B-^101
在字符串开头匹配101
。在后面添加[10]*
,以包括0
和1
之后。^101[10]*
C-101$
匹配字符串末尾的101
。在开头添加[10]*^
以包括前面的0
和1
[10]*101$
D-101
匹配101
任何地方。你不需要^
和$
匹配。第二个正则表达式中的\D
的意思是什么?最初的想法是能够获取字符串,这是设置好的,但是如果字符串是“101”,如果它是“0100101”,它将返回A它将返回B,“101001001”将得到C,“11100001000111”将返回D。同时它拒绝除1和0以外的所有内容。我的意思是,您在开始处放置的第二个正则表达式\\D
。它匹配任何数字的单个实例。这似乎不是您要问的问题,因此我想知道为什么您在其中使用它。在这种情况下,是我试图找出一张表中我说了什么在正则表达式中找到