我正在尝试学习Java正则表达式,并尝试将较小的字符串与另一个字符串进行匹配。以下是我提出的代码。
String text = "this is the text to be searched for occurrences of the http://www.nba.com.";
String patternString = "http://.*";
Pattern p1 = Pattern.compile(patternString);
Matcher m1 = p1.matcher(text);
boolean doesItMatch = m1.matches();
System.out.println(doesItMatch);
System.out.println(m1.group());
我希望doesItMatch
等于true
,m1.group()
等于http://nba.com.
。但是,IDE改为输出
false
Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:536)
at java.util.regex.Matcher.group(Matcher.java:496)
at JTORegex.RegularExpression.main(RegularExpression.java:23)
Java Result: 1
为什么字符串patternString
与字符串text
不匹配? patternString
内确实存在text
。为什么会这样?
答案 0 :(得分:6)
matches
匹配完整的String。使用find
进行部分匹配
boolean hasAMatch = m1.find();
答案 1 :(得分:1)
怎么样
boolean doesItMatch = m1.matches();
if (doesItMatch)
System.out.println(m1.group());
答案 2 :(得分:1)
您可以使用
varname.find();
或使用布尔变量
实例化它boolean newvar = varname.find();