字符串不匹配,即使" patternString"是" text"的子字符串。

时间:2016-03-03 01:11:43

标签: java regex

我正在尝试学习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等于truem1.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。为什么会这样?

3 个答案:

答案 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();