Java正则表达式基础知识与字符串处理工具详解
Java编程中正则表达式的使用总结

更新时间:2016年5月11日17:27:18 作者:超低空
本文主要介绍Java编程中正则表达式的使用总结。正则表达式是一种强大的字符串处理工具。 Java对正则表达式的支持还是很好的。我们先来梳理一下正则表达式。一些基础知识:
1. 字符串中的正则表达式
正则表达式可用于对字符串进行搜索、提取、分割、替换等操作。 String类提供了以下特殊方法:
boolean matches(String regex):判断字符串是否与指定的正则表达式匹配。
String ReplaceAll(String regex, String replacement):将字符串中所有与regex匹配的子串替换为replacement。
String[] split(String regex):使用regex作为分隔符,将字符串拆分为多个子字符串。
以上特殊方法都依赖于Java提供的正则表达式。
2. 创建正则表达式
x:字符x(x可以代表任意合法字符);
\0mnn:八进制数Omnn表示的字符;
\xhh:十六进制0xhh表示的字符;
\uhhhh:十六进制0xhhhh表示的UNICODE字符;
\t:tab('\u0009');
\n:换行(newline)字符('\u000A');
\r:回车('\u000D');
\f:换页符('\u000C');
\a:闹钟(响铃)符号('\u0007');
\e:转义字符('\u001B');
\cx:x对应的控制字符。例如,\cM 匹配 Ctrl-M。 x值必须是A~Z或a~z之一;
3、正则表达式中的特殊字符
$: 匹配行尾。要匹配 $ 字符本身,请使用 \$;
^:匹配行的开头。要匹配 ^ 字符本身,请使用 \^;
():标记子表达式的开始和结束。要匹配这些字符,请使用 \( 和 \);
[]:用于确定括号表达式的起始和结束位置。要匹配这些字符,请使用 \[ 和 \];
{}:用于标记前一个子表达式出现的频率。要匹配这些字符,请使用 \{ 和 \};
*:指定前面的子表达式可以出现零次或多次。要匹配 * 字符本身,请使用 \*;
+:指定前面的子表达式可以出现一次或多次。要匹配 + 字符本身,请使用 \+;
?:指定前面的子表达式可以出现零次或一次。为了匹配?字符本身,使用 \?;
.:匹配除换行符\n之外的任意单位字符。要匹配字符本身,请使用 \.;
\:用于转义下一个字符,或指定八进制或十六进制字符。要匹配 \ 字符,请使用 \\;
|:指定两项之间的任意一项。为了匹配 |字符本身,使用\|;
4. 预定义字符
.:可以匹配任意字符;
\d:匹配从0到9的所有数字;
\D:匹配非数字;
\s:匹配所有空白字符,包括空格、制表符、回车、换页、换行等;
\S:匹配所有非空白字符;
\w:匹配所有单词字符,包括0到9的所有数字、26个英文字母、下划线(_);
\W:匹配所有非单词字符;
5. 边界匹配器
^: 行首
$:行尾
\b:字边界
\B:非字边界
\A:输入的开始
\G: 上一场比赛结束
\Z:输入结束,仅用于最后的终止符
\z:输入结束
6. 表示比赛次数的符号
下图显示了代表匹配次数的符号,这些符号用于确定紧邻该符号左侧的符号出现的次数:
(1) 假设我们要在文本文件中搜索美国社会安全号码。该号码的格式为 999-99-9999。用于匹配它的正则表达式如图1所示。在正则表达式中,连字符(“-”)有特殊的含义。它表示一个范围,例如从 0 到 9。因此,在匹配社会安全号码中的连字符时,其前面有一个转义字符“\”。
(2) 假设在搜索时,您希望连字符出现或不出现——即999-99-9999和999999999都是正确的格式。这时候可以加上“?”连字符后的数量限制符号,如图:
(3) 下面我们再看一个例子。美国汽车牌照的一种格式是四个数字加两个字母。其正则表达式前面是数字部分“[0-9]{4}”,加上字母部分“[AZ]{2}”。下图显示了完整的正则表达式。
7. 一些例子
实施例1
function replace(content){
var reg = '\\[(\\w+)\\]',
pattern = new RegExp(reg, 'g');
return content.replace(pattern, '');
}
//或
function replace(content){
return content.replace(/\[(\w+)\/g, '');
}
实施例2
//zero-width look behind的替换方案 //(?<=...)和(?实施例3
$& 符号的使用
function escapeRegExp(str) { return str.replace(/[abc]/g, "($&)"); } var str = 'a12b34c'; console.log(escapeRegExp(str)); //(a)12(b)34(c)