import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test1 { public static void main(String[] args) {
String html = "<";
String pattern = "\\<";
        //String pattern = "<";  这个也可以
Matcher m = Pattern.compile(pattern).matcher(html);
while (m.find()) {
System.out.println(m.group());
}
}}
是面匹配
 import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test1 { public static void main(String[] args) {
String html = "a";
String pattern = "\\a";
        //String pattern = "<";  这个也可以
Matcher m = Pattern.compile(pattern).matcher(html);
while (m.find()) {
System.out.println(m.group());
}
}}却不匹配,why
难大于号小于号可以特殊,即 < 与\\< 相同
面a 与\\a 却不相同

解决方案 »

  1.   

    \a          报警(bell)符('\u0007') 
    "\\a"表示的是报警(bell)符,当然不能与a匹配
      

  2.   

    < 符号在正则中有特殊含义(?<=X) X,通过零宽度的正 lookbehind 
    (?<!X) X,通过零宽度的负 lookbehind 
    (?>X) X,作为独立的非捕获组 所以直接使用<文本含义时,需要转义,也就是\\<而a直接写就是文本含义,加了转义就改变意思了\a 报警 (bell) 符 ('\u0007') 
      

  3.   

    <在正则中是特殊符号,加斜杠是为了转移,而a只是一个普通的字母,不需要转移!