一、String 类中提供可以使用正则表达式的方法
//判断字符串是否匹配给定的正则表达式,如果匹配返回true.
1)public boolean matches(String regex)
//根据匹配给定的正则表达式来拆分此字符串,limit 参数控制模式应用的次数,指定匹配的次数。
2)public String[] split(String regex, int limit)
//使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
3) public String replaceAll(String regex, String replacement)
注:" .","+ “,”*","| " 在正则表达式中有特殊的含义,因此在java中要使用这些符号对字符串进行分隔时,需要在前面加上"\\"。
即为 " \\.", “\\+” ,"\\", “\\| " 或者用”[.]""[+]""[]""[|]" 。如果是"\",则为\\\\"。
二、实例
//判断字符串是否全部是数字。
String str3="5225662";
System.out.println(str3.matches("\\d")); //返回true
1)对字符串str按'+'进行分隔
String str="12+38+3";
String[] arr=str.split("\\+");
for(String string:arr){
System.out.println(string);
}
2)对字符串str按'|'进行分隔
String str2="aa|bb|cc";
String[] arr2=str2.split("\\|");
for(String string:arr2){
System.out.println(string);
}
3)对字符串按多个分隔符进行分隔,用"[]" 或者用'|'连接多个分隔符。
//使用"[]"对str4按'+'和'|' 进行分隔
String str4="aaa|ccc+dddd";
String[] arr4=str4.split("[|,+]");
for(String string:arr4){
System.out.println(string);
}
//使用"|"对str5按'+'和'|' 进行分隔
String str5="aaa|ccc+dddd";
String[] arr5=str5.split("\\+|\\|");
for(String string:arr5){
System.out.println(string);
}
三、java中的正则表达式
1)字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
2)预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
3)边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
4)Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
5)Logical 运算符
XY X后跟 Y
X|Y X 或 Y
(X) X,作为捕获组
注:根据Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。