正则表达式一般用于字符串匹配、查找、替换、分割。例如:<font color=green>从网页中找出email地址,IP地址是否正确,从网页中找出连接等等。</font>
符号 |
意思 |
|反斜杠 |
\t |
间隔('\u0009') |
\n |
换行('\u000A') |
\r |
回车('\u000D') |
\d |
数字 等价于[0-9] |
\D |
非数字 等价于[^0-9] |
\s |
空白符号 等价于[\t\n\x0B\f\r] |
\S |
非空白符号 等价于[^\t\n\x0B\f\r] |
\w |
单独字符 等价于[a-zA-Z_0-9] |
\W |
非单独字符 等价于[^a-zA-Z_0-9] |
\f |
换页符 |
\e |
Escape |
\b |
一个单词的边界 |
\B |
一个非单词的边界 |
\G |
前一个匹配的结束 |
^ |
限制开头 <font color=orange>^java 条件限制为以Java为开头字符</font> |
$ |
限制结尾 <font color=orange>java$ 条件限制为以java为结尾字符</font> |
. |
限制除\n以外任意一个单独字符 <font color=orange>java.. 条件限制为java后除换行外任意两个字符</font> |
[a-z] |
条件限制在小写a to z范围中一个字符 |
[A-Z] |
条件限制在大写A to Z范围中一个字符 |
[a-zA-Z] |
条件限制在小写a to z或大写A to Z范围中一个字符 |
[0-9] |
条件限制在小写0 to 9范围中一个字符 |
[0-9a-z] |
条件限制在小写0 to 9或a to z范围中一个字符 |
[0-9[a-z]] |
条件限制在小写0 to 9或a to z范围中一个字符(交集) |
[^a-z] |
条件限制在非小写a to z范围中一个字符 |
[^A-Z] |
条件限制在非大写A to Z范围中一个字符 |
[^a-zA-Z] |
条件限制在非小写a to z或大写A to Z范围中一个字符 |
[^0-9] |
条件限制在非小写0 to 9范围中一个字符 |
[^0-9a-z] |
条件限制在非小写0 to 9或a to z范围中一个字符 |
[^0-9[a-z]] |
条件限制在非小写0 to 9或a to z范围中一个字符(交集) |
* |
限制条件为特定字符出现0次以上,<font color=orange>例如, J* 0个以上J;.* 0个以上任意字符;J.*D J与D之间0个以上任意字符</font> |
+ |
限制条件为特定字符出现1次以上。 <font color=orange>J+ 1个以上J ; .+ 1个以上任意字符; J.+D J与D之间1个以上任意字符。</font> |
? |
限制条件为特定字符出现有0或1次以上。<font color=orange>例如,JA? J或者JA出现。</font> |
{} |
限制条件为连续出现指定次数字符。 <font color=orange>例如, J{2} JJ; J{3} JJJ; J{3,} JJJ,JJJJ,JJJJJ.....(3次以上J并存);J{a,b} 有a个以上,b个以下的J</font> |
|
限制条件为两者取一。<font color=orange>例如,Java |
Hello Java或Hello</font> |
举例
Pattern pattern = Pattern.compile("^Java.*");
Matcher matcher = pattern.matcher("Java不是人。");
boolean b = matcher.matches();
System.out.print(b+"");
/**
* 结果为: true
*/
Pattern pattern = Pattern.compile("[,|]+");
String[] strs = pattern.split("Java Hello World Java,Hello,,World|Sun");
for (String str:strs) {
System.out.print(str+" ");
}
/**
* 结果为: Java Hello World Java Hello World Sun
*/
Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
System.out.print(matcher.replaceFirst("Java"));
/**
* 结果为: Java Hello World,正则表达式 Hello World
*/
Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
System.out.print(matcher.replaceAll("Java"));
/**
* 结果为: Java Hello World,Java Hello World
*/
Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
StringBuffer sbr = new StringBuffer();
while (matcher.find()){
matcher.appendReplacement(sbr,"Java");
}
matcher.appendTail(sbr);
System.out.print(sbr.toString());
/**
* 结果为: Java Hello World,正则表达式 Hello World
*/
String str = "www.ceponline@yahoo.com.cn";
Pattern pattern = Pattern.compile("\\w+([-+.]\\w+)*@([\\w\\-]+\\.)+[\\w-]+");
Matcher matcher = pattern.matcher(str);
System.out.print(matcher.matches() + "");
/**
* 结果为: true
*/
Pattern pattern = Pattern.compile("<[^>]+>");
Matcher matcher = pattern.matcher("<a href=/\"index.html/\">主页</a>");
System.out.print(matcher.replaceAll(""));
/**
* 结果为: 主页
*/
Pattern pattern = Pattern.compile("href=/\"(.+?)/\"");
Matcher matcher = pattern.matcher("<a href=/\"index.html/\">主页</a>");
if (matcher.find()) {
System.out.print(matcher.group(1));
}
/**
* 结果为: index.html
*/
Pattern pattern = Pattern.compile("https?://[\\w.]*");
Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf");
if (matcher.find()) {
System.out.print(matcher.group());
}
/**
* 结果为: http://dsds
*/
比较常用的正则表达式
字符 |
代表意义 |
[\u4e00-\u9fa5] |
匹配中文字符 |
\n\s*\r |
匹配空白行,可用来删除空白行 |
^\s*|\s*$ |
匹配首尾空白字符 |
\w+([-+.]\w+)*@\w+([-+.]\w+)* |
验证Email地址 |
https?://[^\s]* |
匹配URL地址 |
网友评论