栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中的正则表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的正则表达式

目录

1.正则表达式

1.1元字符与字符集

1.2 正则表达式

2.Java中的正则表达式

2.1 正则表达式的匹配方法

2.2 “ ”的相关知识


1.正则表达式

1.1元字符与字符集

. 点字符

匹配任何单个字符

 [ ] 字符集

匹配方括号内的任意字符

[a-z],[0-9],[A-Za-z]

[^ ] 否定字符集

匹配除了方括号内里的任意字符

(xyz) 特征标群

匹配与xyz完全相等的字符串


重复次数

* 号

在*号之前的字符重复>=0次

+ 号

在+号之前的字符重复>=1次

?号

在?号之前的字符出现1次或不出现

{n}      重复次数为n

{n,}     n<=重复次数

{n,m}  n<=重复次数<=m


| 或运算符

匹配|符号前或后的字符

转义运算符

[  ]  ( ) { } . * + ? ^ $ |

^ 从行开始匹配

$ 从末端开始匹配


字符集

1.2 正则表达式

下面根据几个具体实例来将上面所述贯穿起来

例题一:

 分析:可以看到Jia(-1)Yi(0)Bing(1)可以分为三块,每一块的规则其实是相同的:大写的字母开头的名字,括号中是-1,0,1,该题的前提条件为候选人名字首字母大写,且候选人个数>=1

正则表达式   ([A-Z][a-zA-Z]*(((-1)|0|1)))+

例题二:

分析:数字在1到10之间的整数或正整数后带小数点0.5,所以1-9开头的既可以为整数,也可以为带.5的小数,10也可以,但10.5不行

正则表达式:  ([1-9](.5)?)|(10)

2.Java中的正则表达式

2.1 正则表达式的匹配方法

方法一:string.matches(regex)

string是你要匹配的字符串,regex是你写的正则表达式(注意要变成\,详细看2.2)

   public static boolean isNumber(String s){
        return s.matches("^[-\+]?[.\d]*$");
    }

方法二:Pattern和Matcher

string是你要匹配的字符串,regex是你写的正则表达式

Pattern是对regex正则表达式进行编译之后得到的结果,将正则表达式变成一个正则标准

把规则编译成一个模式对象,通过这个模式对象的matcher方法得到一个匹配器对象Macher m

调用匹配器对象m的方法,比如m.matches()就是匹配字符串,m.find()就是找与正则表达式匹配的子串

 public static boolean matches(String regex, String s) {
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(s);
    return m.matches();
}

String.matches(regex)方法本质调用了Pattern.matches(regex, str),而该方法调Pattern.compile(regex).matcher(input).matches()方法,而Matcher.matches()方法试图将整个区域与模式匹配,如果只是想要匹配字符串,那么用方法一就可以了。
 

2.2 “ ”的相关知识

把每个 都变成 \

(1)识别字符串“ ”

Java中是不允许直接表示为“ ”的,会报错,应该表示为“ \ ”

这是因为在字符串中”一个 表示转义,java读到 知道要转义了,所以 \ 会转成  

同理 \\ 会转为 \

回到刚刚的问题--识别一个字符串“ ”,按照正则表达式,会得到 \ ,在Java中就是“ \\ ”

 (2)识别字符串“ \ ”

如果我还是没改变正则表达式,那么可定是不匹配的

改正则表达式为“ \* ”,就是匹配 出现0或多次的字符串

 综上,会写正则表达式,搬到java中就是将 无脑乘2,把每个都变成 \

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/973186.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号