正则表达式简介

正则表达式
1. 概念
符合一定规则的表达式。

2. 作用
用于专门操作字符串。

3. 特点
用一些特定的符号来表示一些代码操作。这样就简化了书写,所以学习正则表达式就是学习一下特殊符号的使用。

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

6. 符合介绍


 规则:
(1) 字符
规则 说明
x 校验一个位置上的字符,字符 x
\\ 校验一个位置上的字符,反斜线字符
\0n 校验一个位置上的字符,带有八进制值 0 的字符 n (0 <= n <= 7)
\0nn 校验一个位置上的字符,带有八进制值 0 的字符 nn (0 <= n <= 7)
\0mnn 校验一个位置上的字符,带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 校验一个位置上的字符,带有十六进制值 0x 的字符 hh
\uhhhh 校验一个位置上的字符,带有十六进制值 0x 的字符 hhhh
\t 校验一个位置上的字符,制表符 ('\u0009')
\n 校验一个位置上的字符,新行(换行)符 ('\u000A')
\r 校验一个位置上的字符,回车符 ('\u000D')
\f 校验一个位置上的字符,换页符 ('\u000C')
\a 校验一个位置上的字符,报警 (bell) 符 ('\u0007')
\e 校验一个位置上的字符,转义符 ('\u001B')
\cx 校验一个位置上的字符,对应于 x 的控制符

(2) 字符类

规则 说明
[abc] 校验一个位置上的字符,指定这位置上的字符只能是a或者b或者c
[^abc] 校验一个位置上的字符,指定这位置上的字符只能是除了a或者b或者c的其他字母
[a-zA-Z] 校验一个位置上的字符,指定这位置上的字符只能是字母,即范围在a-z之间和A-Z之间
[a-d[m-p]] 校验一个位置上的字符,指定这位置上的字符是a到d或m到p即[a-dm-p](并集)
[a-z&&[def]] 校验一个位置上的字符,指定这位置上的字符是d、e 或 f(交集)
[a-z&&[^bc]] 校验一个位置上的字符,指定这位置上的字符是a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] 校验一个位置上的字符,指定这位置上的字符是a 到 z,而非 m 到 p:[a-lq-z](减去)

以上规则只能是校验一个位置上的字符,如[abc]指的是长度为1的字符必须是a或b或c中的一个;如[a-z][0-9]指的是长度为2的字符串,第一个字符必须为小写字母,第二个字符必须为数字。规则中每个[](中括号)只代表一个位置上的字符规则。

(3) 预定义字符
规则 说明
. 任何字符(与行结束符可能匹配也可能不匹配)

\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r][制表符、回车符、女性标识符、换页符、换行符]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9](表示单词字符,及里面包括字母(大小写)、数字、下划线)
\W 非单词字符:[^\w]

以上预定义符的作用是都只是描述一个位置上的字符规则,其目的是为了简化“字符类”规则的写法
其实预定义符都是带反斜杠的\,在java中由于反斜杠会把后面的字符转义了,所以要想匹配成功,就应该写两个反斜杠即\\,将其中的一个反斜杠真实表现出来。

 范围(数量词)

规则 说明
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

其中X表示的是上一节所描述的规则,大括号{}表示范围或数量

其实正则表达式就是由具体字符如字符a、具体字符串如http、字符类规则如[abc]、预定义规则如[\d]的组成,再加上数量词组合而成。其中字符、字符串、规则表示字母应该取值的范围,而数量词则表示字母出现的次数。

7. 具体操作功能
(1) 匹配
String的 matches(String regex)方法,用规则匹配整个字符串,只要有一处不符合规则,则匹配结束,返回false。
(2) 切割
String的split(String regex)方法
如:字符串sdfasd.asdfawe.wewet.ggg则不能直接用“.”来分割这个字符串,必须要使用//. 在正则表达式中两个斜杠加.才表达正则表达式自身的这个点服务号,所以要分割就必须//.来分割字符串sdfasd.asdfawe.wewet.ggg
8. 组
为了可以让规则的结果被重用,可以将规则分装成一个组,用( )将规则括起来,此时组的出现就都有了编号,编号从1开始,想要使用已有的组可以通过\n(n就是组的编号)的形式来获取。如:叠词:wecksgggwsdklqqdsdsdffffasddfyyyyasdd要想按字母相同的截取字符串就得这么设置规则:“.(1)+”;

组和捕获
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C)))
2 \A
3 (B(C))
4 (C)
组零始终代表整个表达式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值