Java的正则表达式如何匹配中文字符呢?



下面给出例子让我们匹配所有的中文字符:



Java代码

public static void regxChinese(){ 

 // 要匹配的字符串 

 String source = "<span title='5 星级酒店' class='dx dx5'>"; 

 // 将上面要匹配的字符串转换成小写 

 // source = source.toLowerCase(); 

 // 匹配的字符串的正则表达式 

 String reg_charset = "<span[^>]*?title=\'([0-9]*[\\s|\\S]*[\u4E00-\u9FA5]*)\'[\\s|\\S]*class=\'[a-z]*[\\s|\\S]*[a-z]*[0-9]*\'"; 


 Pattern p = Pattern.compile(reg_charset); 

 Matcher m = p.matcher(source); 

 while (m.find()) { 

 System.out.println(m.group(1)); 

 } 

} 


 public static void regxChinese(){ 

 // 要匹配的字符串 

 String source = "<span title='5 星级酒店' class='dx dx5'>"; 

 // 将上面要匹配的字符串转换成小写 

 // source = source.toLowerCase(); 

 // 匹配的字符串的正则表达式 

 String reg_charset = "<span[^>]*?title=\'([0-9]*[\\s|\\S]*[\u4E00-\u9FA5]*)\'[\\s|\\S]*class=\'[a-z]*[\\s|\\S]*[a-z]*[0-9]*\'"; 


 Pattern p = Pattern.compile(reg_charset); 

 Matcher m = p.matcher(source); 

 while (m.find()) { 

 System.out.println(m.group(1)); 

 } 

 } 


输出如下: 




Html代码 

5 星级酒店 


5 星级酒店 




注解:匹配所有中文字符正则表达式如下: 




Java代码 

[\u4E00-\u9FA5]汉字﹐[\uFE30-\uFFA0]全角字符 


[\u4E00-\u9FA5]汉字﹐[\uFE30-\uFFA0]全角字符 


所以说,Java的正则表达式是可以匹配中文字符的,同时,用中文字符来写表达式也是可以的.比如说上面的要匹配下面的字符: 




Html代码 

5 星级酒店 


5 星级酒店


上面例子中的中文正则表达式还可以写成如下的形式:





Java代码

String reg_charset = "<span[^>]*?title=\'([0-9]*[\\s|\\S]*星级酒店)\'[\\s|\\S]*class=\'[a-z]*[\\s|\\S]*[a-z]*[0-9]*\'"; 


 String reg_charset = "<span[^>]*?title=\'([0-9]*[\\s|\\S]*星级酒店)\'[\\s|\\S]*class=\'[a-z]*[\\s|\\S]*[a-z]*[0-9]*\'";