Java复习笔记-Java与正则表达式

Java与正则表达式


示例,使用正则表达式检测电话号格式

String pn="15010123456"
boolean b=pn.mayches("[0-9]{11}");//简单版本,检测一个11位全是数字的字符串序列

Java正则表达式API

//需要导入这些
import java.util.regex.Matcher
import java.util.regex.Pattern
//在类的函数中
void checkPhoneNumber()
{
    String pn="15010123456";
    //Pattern(模式)
    Pattern p=Pattern.compile("[0-9]{11}");//编译正则表达式
    //Matcher(匹配器)
    Matcher m=p.matcher(pn);//使用匹配器
    boolean b=m.matches();
}
//还有像这样的函数
String str="abjavacd";//需要查看是否匹配的字符串
String reg="..java..";//正则表达式
Pattern.matches(reg,str);

此外还有spilt()分割,find()查找,replaceAll()替换,可以在后面的实例查看。

正则表达式语法

^java 条件限制为以java为开头字符

java$ 条件限制为以java为结尾字符

java. .表示除/n以外的任意一个单独字符,所以java.表示java后除换行外的任意一个字符

[358]条件限制在358中的一个数字

[a-z] 条件限制在a到z的一个字符

[a-zA-Z]条件限制在小写a-z或者大写A-Z中的一个字符

[0-9]条件限制为数字0-9

[0-9[a-z]]条件限制在0-9或者a-z中的一个字符(交集)

如果在[]中加^表示要不满足[]中的情况

[^0-9] 条件限制在非0-9的任意一个字符

.*表示0个以上的任意字符

J*表示出现0个以上的*

J+表示出现1个以上的J

J?表示J可能出现也可能不出现

J{2} 表示J出现两次

J{2,6}表示J出现2到6次

J{2,}表示J出现2次以上

Java|Hello 表示要么出现Java要么出现Hello

此外可以使用转义字符

正则表达式实例

分割一个字符串

String str="Hello,world hello:world";
String reg="[,;]";
Pattern p=Pattern.compile(reg);
//调用了spilt方法进行分隔,分隔符是,或者是;
String[] a=p.spilt(str);
for(String s:a){
    System.out.println(s);
}

替换一个字符串

String[] names={"张一三","王一五","小一军"};
String reg="(.).(.)";//()代表一个组,此处有两个组
Pattern p=Pattern.compile(reg);
for(String name:names){
    Matcher m=p.matcher(name);
    String s=m.replaceAll("$1*$2");//因为分了组,所以$1和$2还是表示组中原本的内容,所以输出的结果是张*三,王*五,小*军
}

查找一个字符串

String str="how are test you ni hao ma";
String reg="\\b[a-z]{3}\\b";//这里\\b限制了单词的边界,不然test中的tes也会被匹配到,但是它不是一个完整的单词
Pattern p=Pattern.compile(reg);
Matcher m=p.matcher(str);
while(m.find()){
    System.out.println(m.group());
    System.out.println(m.start()+":"+m.end());//这里还输出了匹配到的单词的起始位置和终止位置
}

输出结果

how
0:3
are
4:7
you
13:16
hao
20:23
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值