Java字符串:正则表达式
正则表达式定义了字符串模式,定义了字符串各种匹配规则,可以用来搜索,编辑和处理文本.
在java中,我们用Pattern类来操作正则表达式.
入门案例:
查看手机号是否符合规则 1开头,共11位数字
String s=”13345678899”;
String pat=”1\d{10}”; //定义正则表达式
Pattern r = Pattern.compile(pat); // 创建 Pattern 对象
Matcher m = r.matcher(s); // 现在创建 matcher 对象
boolean isMatch = m.matches(); //判断是否匹配正则表达式规则
注意:
1 正则表达式在定义的时候也是以字符串的形式;
2 普通字符串也可以作为正则表达式;
正则表达式由原子和元字符两部分构成。
原子表示匹配的具体内容,我们可以用普通字符串或者通用字符作为原子;
元字符表示匹配方式和规则;
常用原子(通用字符):
\w 匹配任意字母/数字/下划线
\d 匹配数字
\s 匹配空白字符
\W 和小写 w 相反,匹配任意字母/数字/下划线以外的字符
\D 匹配除了十进制数以外的值
[0-9] 匹配一个0-9之间的数字
[a-z] 匹配小写英文字母
[A-Z] 匹配大写英文字母
[\u4e00-\u9fa5] 匹配中文字符
注意:JAVA中正则表达式斜杠需要使用\\
package cn.xtnotes.u2;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class T18_zhengze {
public static void main(String[] args) {
String a="12345678910";
String pat="1\\d{10}"; //正则表达式规则:1开头+10位数字
Pattern p=Pattern.compile(pat); //获取pattern对象,传入正则表达式
Matcher m=p.matcher(a); //创建matcher,传入字符串
System.out.println(m.matches());
}
}
常用元字符:
. 匹配任意字符
{n} 前面的原子出现了 n 次
{n,} 前面的原子至少出现 n 次
{n,m} 前面的原子出现次数介于 n-m 之间
( ) 分组,可用来提取字符串内容
String a="123456";
String pat="\\d{5,}"; //正则表达式规则:原子个数至少出现5.也就是>=5
Pattern p=Pattern.compile(pat); //获取pattern对象,传入正则表达式
Matcher m=p.matcher(a); //创建matcher,传入字符串
System.out.println(m.matches());
Matcher 类的方法
String matcher.group() //提取分组中的字符串
String matcher. replaceAll () //替换
package cn.xtnotes.u2;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class T18_zhengze {
public static void main(String[] args) {
String a="张三,电话:15953794424 ";
String pat="(\\d{11})"; //正则表达式规则:11位数字
Pattern p=Pattern.compile(pat);
Matcher m=p.matcher(a);
//System.out.println(m.find()); //寻找表达式规则(11位数字)是否存在
//System.out.println(m.group()); //给正则表达式加括号分组,输出表达式内容
}
}
如果字符串中有多个电话号码怎么办?
package cn.xtnotes.u2;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class T18_zhengze {
public static void main(String[] args) {
String a="张三,电话:15953794424 爱好:15953654251 ";
String pat="(\\d{11})"; //正则表达式规则:11位数字
Pattern p=Pattern.compile(pat);
Matcher m=p.matcher(a);
while(m.find()) {
System.out.println(m.group());
}
}
}