博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式9-分组搜索
阅读量:4623 次
发布时间:2019-06-09

本文共 1577 字,大约阅读时间需要 5 分钟。

分组搜索么,听上去好像比较高深,其实没什么了,说白了,就是用圆括号 ( ) 将表达式中的一部分括起来,每一个括起来的表达式就是一个组,所以叫分组。

使用分组,我们可以实现更牛X的搜索,继续看吧:

表达式

含义

举例

(xx|yy)

搜索的字符中或者包含xx,或者包含yy

原始字符串:The gray wolf is behind the grey rock.

正则表达式:\bgr(a|e)y\b

搜索结果: gray, grey

(正则表达式)\编号

通过编号引用组。编号从 1 开始,按照从左到右的顺序,每遇到一个 (,就将该组的编号加 1。

(编号为 0 的组在哪里?完整的表达式就是编号为 0 的组喽)

原始字符串:apples apples are good to you health

正则表达式:(\w+)\s\1

搜索结果: apples apples

(?<组名>正则表达式)

(?'名字'正则表达式)

通过名字引用组

原始字符串:Apples apples are good to you health

正则表达式:(?<dup>\w+)\s+\k<dup>

搜索结果: Apples apples

正则表达式1(?=正则表达式2)

带尾巴搜索。要搜正则表达式1,但是条件是后面要接正则表达式2

原始字符串:The dog is too big

正则表达式:\b\w+\b(?=\s+is\b)

搜索结果: dog

正则表达式1(?!正则表达式2)

上面规则的“反”,即尾巴的条件不要符合表达式2

原始字符串:The dog is too big

正则表达式:\b\w+\b(?!\s+is\b)

搜索结果: the, is, too, big

(?<=正则表达式2)正则表达式1

带帽子搜索。要搜正则表达式1,但是前面要接正则表达式2

原始字符串:The dog is too big

正则表达式:(?<=\bdog\b\s+)\bis\b

搜索结果: is

(?<!正则表达式2)正则表达式1

上面规则的“反”,即帽子的条件不要符合表达式2

原始字符串:The cat is too big

正则表达式:(?<!\bdog\b\s+)\bis\b

搜索结果: is

(?(正则表达式1)yes|no)

如果正则表达式1为真,则执行 yes,否则执行 no

原始字符串:01-1234567  020-123456  777-88-9999

正则表达式:\b(?(\d{2}-)\d{2}-\d{7}|\d{3}-\d{2}-\d{4})\b

搜索结果:01-1234567, 777-88-9999

(?<组名>正则表达式)(?<组名>yes|no)

如果组名存在,则执行 yes,否则执行 no

原始字符串:01-1234567  020-123456  777-88-9999

正则表达式:\b(?<n2>\d{2}-)*(?(n2)\d{7}|\d{3}-\d{2}-\d{4})\b

搜索结果:01-1234567, 777-88-9999

好吧,我承认,上面的内容确实不如前面几章的容易懂,但是我相信,只要仔细观察和思考,并多动手试试,你一定会明白的。

如果上面的内容你都看明白了,这时候回头看“概述”那章的两句正则表达式,你能看懂它们的意思么? :-)

下面是其它一些分组的表达式,就不一一列举了,查阅 MSDN 吧:

平衡组

(?<name1-name2>正则表达式)

非捕获组

(?:正则表达式)

分组搜索的选项

(?imnsx-imnsx:正则表达式)

非回溯表达式

(?>正则表达式)

转载于:https://www.cnblogs.com/daizhonghai1314/articles/2951574.html

你可能感兴趣的文章
js string format
查看>>
python 获取大乐透中奖结果
查看>>
Mysql的安装和图形化界面的使用
查看>>
iOS 圆的放大动画效果
查看>>
ubuntu 16.04 安装cuda的方法
查看>>
silverlight 学习(-)--线性渐变画刷LinearGradientBrush
查看>>
我的秋季学期学习总结
查看>>
cocoapods Error
查看>>
第一次向nodeclub提交修改
查看>>
ionic3应用的Android打包签名发布步骤
查看>>
PetShop的系统架构设计
查看>>
获取表字段信息
查看>>
软件测试2019:第七次作业—— 用户体验测试
查看>>
加载SOS调试器扩展
查看>>
iptables 初见 第一章
查看>>
SudaMod-81.0 / crDroidAndroid-8.1(android-8.1.0_r20)红米3 2018年5月3日更新
查看>>
浅谈.net jenkins svn下自动化集成环境安装 搭建 配置
查看>>
一:数据库概述
查看>>
目录与文件的权限意义
查看>>
[C++基础]023_为什么要将基类的析构函数声明为Virtual?
查看>>