正则表达式

String 类中有个matches(String regx)方法,返回一个布尔类型的值;用来匹配已给字符串是否与regx向匹配;
正则表达式用于操作 字符串数据。需要 通过一些特定的符号来体现,因此必须要掌握一些特殊符号。使用时要经常查看api中String类中matches方法中的正则表达式符号
字符类
[abc]abc(简单类)
[^abc]任何字符,除了 abc(否定)
[a-zA-Z]azAZ,两头的字母包括在内(范围)
[a-d[m-p]]admp[a-dm-p](并集)
[a-z&&[def]]def(交集)
[a-z&&[^bc]]az,除了 bc[ad-z](减去)
[a-z&&[^m-p]]az,而非 mp[a-lq-z](减去)
 
预定义字符类
.任何字符(与行结束符可能匹配也可能不匹配)
\d数字:[0-9]
\D非数字: [^0-9]
\s空白字符:[ \t\n\x0B\f\r]
\S非空白字符:[^\s]
\w单词字符:[a-zA-Z_0-9]
\W非单词字符:[^\w]

边界匹配器
^行的开头
$行的结尾
\b单词边界
\B非单词边界
\A输入的开头
\G上一个匹配的结尾
\Z输入的结尾,仅用于最后的结束符(如果有的话)
\z输入的结尾
 
Greedy 数量词
X?X,一次或一次也没有
X*X,零次或多次
X+X,一次或多次
X{n}X,恰好 n
X{n,}X,至少 n
X{n,m}X,至少 n 次,但是不超过 m
优缺点:代码简化了,但是阅读性也变差了!
例子:

反斜线字符 ('\') 用于引用转义构造,如上表所定义的,同时还用于引用其他将被解释为非转义构造的字符。因此,表达式 \\ 与单个反斜线匹配,而 \{ 与左括号匹配。

在不表示转义构造的任何字母字符前使用反斜线都是错误的;它们是为将来扩展正则表达式语言保留的。可以在非字母字符前使用反斜线,不管该字符是否非转义构造的一部分。  


正则规则中封装方法用()即为组,组有编号,后面使用时直接拿组的编号来代表组,在使用组编号时需要使用转义符\\x

在没有()时默认为第零组,组编号为0,组的编号顺序按照左括号的顺序

正则表达式对字符串的常见操作:
1、匹配: 其实使用的就是String类中的matches方法
[1-9][0-9]{4-14}:匹配第一位不能为0的5—15位的数字;
as?b:匹配a和b之间不存在s或只存在一次s的字符串;as*b:s可以出现零次或者多次;as+b:s可以出现一次或者多次
2、切割
str.split(" +")遇到一个空格或者是多个空格时切割
str.split("\\."): 遇到.时进行切割(注意第一个\用来转义第二个\,第二个\用来转义.)
str.split((.)\\1+):表示遇到叠词进行切割,例如遇到aaa,bbbbb时切割
3、替换
其实使用的就是String类中的repalceAll()方法
str.repalceAll("(.)\\1+","#"):将字符串中的叠词用一个#号来代替
str.repalceAll("(.)\\1+","$1"):将字符串中的叠词取消重复,变成一个词(其中$代表拿到前一个正则表达式中的第一组拿过来)
str.repalceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2"):将手机号中的中间四位隐藏起来
4、获取
Pattern p = Pattern.compile("\\b[a-z]{3}\\b");\\将正则规则进行对象封装
Matcher m = p.matcher("da jia hao jin tian bu fang jia");\\通过正则对象的matches方法组付出相关联。获取对字符串操作的匹配器对象Matcher
\\boolean b = m.matches();\\通过Matcher匹配器对象的方法对字符串进行操作
m.find();\\对匹配对象进行查找,只有先查找才能进行返回字符串
m.group();\\返回匹配的字符串
还可通过while(m.find())与str.replaceFirst("regx",m.group)等操作联合进行替换。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值