学习笔记-基础知识16-正则表达式

正则表达式

正则表达式:符合一定规则的表达式:regex
作用:用于专门操作字符串
特点:用一些特定的符合来表示一些代码操作,这样就简化书写。
所以学习正则表达式,就是学习对一些特殊符号的使用

好处:可以简化对字符串的复杂操作
弊端:符号定义越多,正则越长,阅读性越差。

具体操作:

在java.lang.String中(String类中)
1.匹配
boolean matches(String regex):告知此字符串是否匹配给定的正则表达式,返回布尔型的值。
用规则匹配整个字符串,只要一处匹配
规则:
字符类:
[abc]:这个字符串中的第一个字符只能是abc中的一个,而且这个字符串只能是一个字符。
[^abc]:任何字符,除了abc
[abc][a-z]:第一个字符是abc中的一个,第二个字符是a-z任意一个字符
[a-zA-Z]:a-z或A-Z中的字符

预定义字符类:
    .:任意字符
    \d:数字[0-9]
    \D:非数字[^0-9]
    \w:单词字符[a-zA-Z_0-9]
    \W:非单词字符[^\w]
在java中,字符串中出现\,会将后面的字符转义字符,
在正则表达式中,\d是一个整体,要把这个\转义成普通的\,再和后面的字符组合。
所以在正则表达式中,\是一对一对出现的。\\d

Greedy数量词:
    X? : X 出现一次或一次没有
    X* : 零次或多次
    X+ : 一次或多次
    X{n} : 恰好n次
    X{n,} : 至少n次
    X{n,m} : 至少n次,不超过m次

边界匹配器:
    找3个字母组成的单词:regex="\\b[a-z]{3}\\b";
    \b:单词边界;\B非单词边界 

**2.切割:**String类中的split
String split(String regex):

多个空格切:" +"
按.切:"\\.":
    因为.是正则表达式的特殊符号,所以要转义。
    正则表达式中.是用\.表示,所以要转义\\.
按\\切:"\\\\" 

按叠词切:!!!!
按叠词切:"(.)\\1+" :两个或两个以上相同的字符叠词所以用+
第一位是任意字符,第二位拿第一位的值。
为了让规则的结果被重用,可将要重用的部分封装成一个组,用()表示。
组封装完后,会有自动编号,从1开始。
想要使用已有的组,可通过\n(n就是组的编号)的形式来获取。
两个或两个以上相同的字符叠词所以用+

复杂表达式:((A)(B(C)))共有4个组
1-((A)(B(C)))
2-(A)
3-(B(C))
4-(C)

**3.替换:**String类中的replaceAll()
String replaceAll(String regex,String replacement)
String replaceAll(String str,String regex,String replacement)

4.获取:将符合规则的字符串取出。
操作步骤:
1.将正则表达式封装成对象1.Pattern p=Pattern.compile(regex);
2.让正则对象和要操作的字符串相关联 2.3. Matcher m=p.matcher(str);
3.关联后,获取正则匹配引擎
4.通过引擎对符合规则的子串进行操作,比如取出。4. m.group()

Pattern类:正则表达式的编译表达形式
Pattern类在java.util.regex.Pattern;
Pattern:不能new对象。

方法:
static Pattern compile(String regex):将给定的表达式编译到模式中。
Matcher matcher(CharSquence input):创建匹配给定输入与此模式的匹配器。
static boolean matcher(String regex,CharSquence input):
编译指定正则表达式并尝试将给定输入与其匹配。

Matcher类(对象):java.util.regex.Matcher;
Matcher类(对象):通过解释Pattern对character sequence执行匹配操作的引擎。

CharSequence:java.lang.*;
字符区的接口,有个子类String。

Matcher类(对象)中的功能:此模式新匹配器
boolean matches():将整个区域与模式匹配,同String类的matches方法。
    其实String类中的matches方法,用的就是Pattern和Matcher对象来完成的,
    只不过被String的方法封装后,用起来较为简单,但是功能却单一。
String group():返回由以前匹配操作所匹配的输入子序列。
    m.group():用于获取匹配后结果
boolean find():尝试查找与该模式匹配的输入序列的下一个子序列。
    boolean b=m.find():将规则作用到字符串上并进行符合规则的子串查找。

int start():
    m.start():子串的索引的开头角标
int end():
    m.end():子串的索引的结尾角标

找3个字母组成的单词:regex="\\b[a-z]{3}\\b";
    \b:单词边界;\B非单词边界 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值