i'm new to regex with Java, and i'm trying to extract all "lesson#" from this text:
<a id="lesson1" href="lesson1.html">Lesson 1</a>
<a id="lesson2" href="lesson2.html">Lesson 2</a>
<a id="lesson3" href="lesson3.html">Lesson 3</a>
<a id="lesson4" href="lesson4.html">Lesson 4</a>
<a id="lesson5" href="lesson5.html">Lesson 5</a>
<a id="lesson6" href="lesson6.html">Lesson 6</a>
<a id="lesson7" href="lesson7.html">Lesson 7</a>
<a id="lesson8" href="lesson8.html">Lesson 8</a>
<a id="lesson9" href="lesson9.html">Lesson 9</a>
I'm using this code to extract that part from my string:
String s = ""
+ "<a id=\"lesson1\" href=\"lesson1.html\">Lesson 1</a>\n"
+ "<a id=\"lesson2\" href=\"lesson2.html\">Lesson 2</a>\n"
+ "<a id=\"lesson3\" href=\"lesson3.html\">Lesson 3</a>\n"
+ "<a id=\"lesson4\" href=\"lesson4.html\">Lesson 4</a>\n"
+ "<a id=\"lesson5\" href=\"lesson5.html\">Lesson 5</a>\n"
+ "<a id=\"lesson6\" href=\"lesson6.html\">Lesson 6</a>\n"
+ "<a id=\"lesson7\" href=\"lesson7.html\">Lesson 7</a>\n"
+ "<a id=\"lesson8\" href=\"lesson8.html\">Lesson 8</a>\n"
+ "<a id=\"lesson9\" href=\"lesson9.html\">Lesson 9</a>\n"
+ "";
Pattern pattern = Pattern.compile("id=\"(lesson[0-9])");
Matcher m = pattern.matcher(s);
System.out.println("Find: " + m.find())
System.out.println("Matches: " + m.matches());
if (m.matches()) {
System.out.println("Group 0: " + m.group(0));
}
The output i get with this code is:
Find: true
Matches: false
and in javadocs i read that if m.matches returns false i can't access groups.
Why if m.find() returns true, m.matches() returns false? I can't access groups with this code, so what am i missing?