String的某些方法对传入的String参数并不解释成具体的字符串值,而是将其解释成具有特定字符串特征的字符串表达式,该表达式表示的并不是具体的字符串值而是一种特征。表达式中含有具有特定意义的符号,用于限定表达式表示的字符串特征,该表达式称为正则表达式。
String的以下方法中用到的String类参数regex将被解析成正则表达式:
boolean matches(String regex)
String replaceAll(String regex,String replacement)
String replaceFirst(String regex,String replacement)
String[] split(String regex)
String[] split(String regex,int limit)
正则表达式对字符串特征进行限定的方式有:
1)对单个字符位的字符值进行限定;
2)对一个字符位进行规则限定,然后设定该规则向后重复的位数;
3)将单个或连续多个字符位编组,对组进行规则限定,然后设定该规则向后重复的组数;
4)在编组的情况下,引用前方适配过的组的结果进行新的规则限定;
正则表达式应用举例:
1)"[abcd]"、"[a-z]" ——这些都是对单个字符位的限定;
2)"[a-z]+"、"[A-Z]*"、"[1-9]{2,5}"、"a+"、"a*"、"a{2,5}"——单个字符位向后重复的位数;
3)"(ab[a-z]d)+"、"(ab[a-z]d)*"、"(ab[a-z]d){2,5}"——组向后重复的位数;
4)"([a-z1-9])[a-d]\\1"——后面引用前面适配过的组的值。
正则表达式符号解释:
[...]——方括号限定一个字符位,其中的内容取并集;
{2}、{2,5}、{2,}——大括号用于修饰其前面的单个字符位或组要重复的次数或次数的上下限(上限下限都含),可以只有下限;
(...)——园括号用于分组,组号从1开始,从左向右按遇到的左括号的顺序编组号,其实整个正则表达式是第0组;
+——加号用于表示前面的单个字符或组的规则限定重复一次或多次;
*——乘号用于表示前面的单个字符或组的规则限定重复零次或多次;
?——问号用于表示前面的单个字符或组的规则限定重复零次或一次;
[^...]——方括号中第一位是符号^,表示对括号中的并集取补集即取反,如果将该符号放在第一位方括号中第一位以外的位上就没有取反的意思只代表^符号;
[...&&...]——方括号内部的&&,表示将两边的规则取交集;
.——点号表示任意字符;
\d——表示[0-9];
\D——表示[^0-9];
\s——表示空白字符[\t\n\x0B\f\r];
\S——非空白字符;
\w——单词字符[a-zA-Z_0-9];
\W——非单词字符[^\w];
\\——表示\;
^——行开头;
$——行结尾;
\b——单词边界;
\B——非单词边界;
\A——输入的开头;
\z——输入的结尾;
\Z——输入的结尾,仅用于最后的结束符(如果有的话)。
Pattern类和Matcher类:
Pattern类用于匹配正则表达式和char值可读序列,其用法是:
1.用Pattern类的静态方法获得Pattern对象(static Pattern compile(String regex))——获得带有给定的正则表达式的Pattern对象,Pattern具有String的matches(...)方法和split(...)方法;
2.用Pattern对象的方法(Matcher matcher(CharSequence input))获得Matcher对象——Matcher既带有待匹配序列又带有正则表达式,具有包括replaceAll(...)方法、replaceFirst(...)方法、matches()方法、find()方法、group()方法在内的一系列方法可用于对char序列进行匹配。
Matcher的方法:
String replaceAll(String replacement);
String replaceFirst(String replacement);
boolean matches();
boolean find()和String group()——用find方法在char序列中查找匹配正则表达式的子序列,找到返回true否则返回false,若find返回true,此时调用group方法将返回此次查找找到的子序列(String),若find返回false,则返回null,如果未调用find方法就调用group方法将抛出异常。
char值序列带有索引,在调用匹配方法时,索引会随着移动,下次的匹配起始位置也随着移动。
int start()——返回最后一次匹配的开始索引;
int end()——返回最后一次匹配的结束索引。