正则表达式 不等于_正则表达式使用

正则表达式是文本搜索的一个利器,掌握它定会提高你的工作效率。

要使用正则表达式就必须知道有哪些元字符以及它们所代表的意义,这里我就不再对每个元字符做说明了,假设你已经了解了这些知识,如果还不了解可以参考网上的一些资料。

以下所有示例用的是一个在线的正则表达式测试工具来验证的,地址是 https://tool.oschina.net/regex/

1、匹配指定数量字符

比如11位的手机号:[0-9]{11},匹配结果如下图:

ebc255d2ae83169f9f59c6cdb829f76e.png

匹配指定数量字符

大括号里的数字表示重复前面匹配的数量,有以下几种写法

  1. {k} 表示重复次数k
  2. {m,} 表示重复次数不小于m
  3. {,n} 表示重复次数不大于n
  4. {m,n} 表示重复次数不小于m且不大于n

我用的这个测试工具不支持上面四种所有写法,只支持1,2,4这三种写法

2、匹配至少1个字符

比如匹配数字与字母相互交叉文本中的所有字母部分:[a-zA-Z]+,匹配结果如下图:

cf13d1904c1f5956a7e2e53d65acec42.png

匹配至少1个字符(图1)

这种写法与[a-zA-Z]{1,}等效,得到同样结果,如下图所示:

cd22cb3b27c1e0a43420e597acdf76d0.png

匹配至少1个字符(图2)

还有一个可以表示匹配数量的元字符是*,不过它表示大于等于0个匹配,也就是说以下这种写法[a-zA-Z][a-zA-Z]* 也与 [a-zA-Z]+ 是等效的,得到同样结果,如下图所示:

8345f931ea308f63ffacb169cfe15011.png

匹配至少1个字符(图3)

3、匹配另一个正则表达式结果指定数量的文本

这种匹配其实与前两种写法上没有多大区别,唯一的区别就是需要重复的文本不再是单个字符,而是其它正则表达式匹配的结果,比如匹配ip地址:([0-9]{1,3}.){3}[0-9]{1,3},匹配结果如下图:

3fc92b7a08c2a56242900cbab49f2a06.png

4、引用前一个正则表达式匹配结果

通过的方式可以引用第n个分组,比如查找不相邻的两个重复的单词:([a-zA-z]{5,}).+1,匹配结果如下图:

6d67b36f84256204fd7404256c8d2aa7.png

5、匹配开头是指定字符的文本

比如匹配开头是数字的文本:^[0-9]+,匹配结果如下图:

d005d4499f682b656edc95c7096f98dc.png

6、匹配结尾是指定字符的文本

比如匹配结尾是数字的文本:[0-9]+$,匹配结果如下图:

c9c7f8aea6612c6bad165c59422711cc.png

7、前向肯定与否定预匹配

比如搜索后面必须紧跟hello这个单词的数字:[0-9]+(?=hello),匹配结果如下图:

5fa38a07f13137ac6ba2ef93c924441b.png

比如搜索后面一定不能紧跟hello这个单词的数字:[0-9]+(?!hello),匹配结果如下图:

b0413c5d896de15de882d3c8fe6b1713.png

8、后向肯定与否定预匹配

比如搜索前面必须是数字的英文单词:(?<=[0-9]+)[a-zA-Z]+,匹配结果如下图:

929169a0ed1b59ddd386a6a00c39da9b.png

比如搜索前面一定不是数字的英文单词:(?

8a1be922fb06257a98825d8842c9eb41.png
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值