[英]white space matching regular expressions
我有以下两种模式将html标记名称与可能的前导空格匹配。 [ ]*
在命名组<doubletag>
内的第一个模式不起作用,但是[ ]*
紧跟在标记符号"<"
之后的第二个模式有效。 我不知道为什么第一个不起作用。
String s = "< pre href = "dajflka" >ld fjalj09u293 ^% </pre>";
Pattern ptr = Pattern.compile("(<(?<doubletag>[ ]*[a-z]+)([ \\d\\s\\w\\W[^>]])*>)(.*)(</\\k<doubletag>[ ]*>)");
Pattern ptr = Pattern.compile("(<[ ]*(?<doubletag>[a-z]+)([ \\d\\s\\w\\W[^>]])*>)(.*)(</\\k<doubletag>[ ]*>)");
Matcher match = ptr.matcher(s);
if(match.find()){
System.out.println("Found");
}
\\s
是空格,如果这是您想要的,请放[\\s]*
。
实际上,第一个模式可以找到前导空白。 如果仅尝试第一个模式的第一组:
String s = "< pre href = \" dajflka \" >";
Pattern pattern = Pattern.compile("<(?<doubletag>[ ]*[a-z]+)([ \\d\\s\\w\\W[^>]])*>");
Matcher match = pattern.matcher(s);
if (match.find()) {
System.out.println("Found");
System.out.println(match.group("doubletag"));
}
您将获得doubletag
:
" pre"
问题是,在</pre>
,它没有前缀空格,因此(</\\k<doubletag>[ ]*>)
组(</\\k<doubletag>[ ]*>)
。 这就是为什么第一个模式不能匹配整个字符串的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.