Я столкнулся с этой проблемой Hackerrank, и регулярное выражение должно соответствовать строке между тегами HTML.Регулярное выражение и строка:
String str="<h1>Hello World!</h1>";
String regex="<(.+)>([^<]+)</\\1>";
А что, если у 'str' есть несколько тегов HTML, например String str="<h1><h1>Hello World!</h1></h1>"
, и как ([^<]+)
ловит эту 'str'.
Myвопрос в том, как ([^<]+)
соответствует 'str', а не ([a-zA-Z]+)
.
Здесь, если полный исходный код:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/* Solution assumes we can't have the symbol "<" as text between tags */
public class Solution{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int testCases = Integer.parseInt(scan.nextLine());
while (testCases-- > 0) {
String line = scan.nextLine();
boolean matchFound = false;
Pattern r = Pattern.compile(regex);
Matcher m = r.matcher(line);
while (m.find()) {
System.out.println(m.group(2));
matchFound = true;
}
if ( ! matchFound) {
System.out.println("None");
}
}
}
}
Не против, если я глуп, чтобы спроситьэтот вопрос и спасибо заранее!