开始

  • 其实很简单, 在正则里将一些不确定的内容用括号包裹起来,再后面再加一对花括号即可.
  • 看例子:
start
1:hello
2:my
3:world
end
start
1:we
3:are
4:champions
end
  • 以上这段内容, start 和 end 里包裹了一些东西, 第一个段落里有3行, 编号为:1 2 3, 第二个段落也是3行,但是编号变成了:1 3 4 .
  • 也就是说: 编号1 和 3 是确定的, 编号 2在第一段里存在,在第二段中不存在, 编号 4 则相反, 第一段没有, 第二段有.
  • 碰到这种不确定的情况,我们就把整个不确定的内容用() 包裹起来,然后在后面加一对花括号, 例如: ( xxx ){0,1} 表示 xxx 这个字符串,有可能出现, 也有可能不出现.
  • 接着看我们上面那个例子,我们编一个正则读取每个编号后面的英文单词:
start[\r\n]1:(.+?)[\r\n](2:(.+?)[\r\n]){0,}3:(.+?)[\r\n](4:(.+?)[\r\n]){0,}end
  • [\r\n] 代表换行
  • (2:(.+?)[\r\n]){0,} 看到了吗, 编号 2 整个用() 括起来了,后面的{0,1} 表示它可能出现0次,也可能出现 1 次, 同样的, 编号 4 也是这么处理的.
  • 问题解决!

后记

  • 用这种方法你无需担心match值不存在的问题, 比如说第一个段落没有编号4, 但是系统还是会给你返回一个编号为4, 值为 null 的返回值. 这有点类似于"访问一个不存在的数据元素" 和 “访问一个值为空的数组元素” 一样, 前者有可能导致程序报错, 但后者处理起来就容易多了.
  • 花括号{} ,是个好工具, 特别在一些不确定的场合, 比如: \s{1,} 表示\s (空格) 有可能出现1次到无限次, 这用于表达不确定空格次数的场合就很合适了.

如何在正则表达式里表达可能存在也可能不存在的内容?相关推荐

  1. 正则表达式里转义字符_五分钟搞定正则表达式,如果没搞定,再加两分钟

    五分钟搞定正则表达式,如果没搞定,再加两分钟 [这是 ZY 第 18 篇原创文章] 文章概览 一.正则表达式介绍 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简 ...

  2. 正则表达式里“-“中划线的使用注意

    正则表达式里"-"中划线的使用注意 今天要匹配正则表达式,把非法的字符找出来,开始的写法是这个 [^A-Za-z0-9_.*-+%!],我的目的是把_.*-+%!这7个字符算合法字 ...

  3. oracle正则表达式包含但不含_正则表达式里字符串”不包含”匹配技巧 - 穿梭于偶然...

    经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在 事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确.就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配,从而解决我们的问题 ...

  4. 微信之夜,张小龙说视频化表达将会成为下一个十年内容领域的主题

    因为疫情,今年微信的公开课Pro和开发者倍加关注的微信之夜放到了线上举行,微信之父,腾讯高级执行副总裁.微信事业群总裁张小龙的微信之夜直播,更是用今天他在演讲中反复提及的视频号进行直播,将今天的活动推 ...

  5. 在python中,用正则表达式提取多层括号中最外层括号包含的内容

    提取多层括号中最外层括号包含的内容有几种方式,那么用正则表达式该怎么实现呢? 在python中,用正则表达式提取多层括号中最外层括号包含的内容 比如有一个字符串 : 学习python中有什么不懂的地方 ...

  6. 大学所有专业都要学c语言吗,是不是大学里的所有专业都会学一些计算机基础内容...

    是不是大学里的所有专业都会学一些计算机基础内容以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 是不是大学里的所有专业都会 ...

  7. python多行字符串变单行_Python 正则表达式里的单行s和多行m模式

    Python 的 re 模块内置函数几乎都有一个 flags 参数,规定了正则匹配时的各种策略模式,其中有两个模式:单行(re.DOTALL, 或者re.S)和多行(re.MULTILINE, 或者r ...

  8. 藏在正则表达式里的陷阱

    2019独角兽企业重金招聘Python工程师标准>>> 前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%.通过 Java ...

  9. 正则表达式(中文表达:检查表达式符)

    为什么80%的码农都做不了架构师?>>>    独乐乐不如众乐乐,有好东东不敢独享,拿出来给大家分享: 正则表达式是regular expression,看来英文比中文要好理解多了, ...

最新文章

  1. 【共振峰跟踪】通过平均不同分辨率的方法跟踪共振峰,基于时频lpc的频谱图的MATLAB仿真
  2. 采购申请 RFC BAPI
  3. 如何测量代码执行时间
  4. 【数据结构与算法】之深入解析“不同的二叉搜索树II”的求解思路与算法示例
  5. 初进JAVA职场面试小技巧:一个老学长的吐血之作!
  6. Go-json解码到结构体
  7. 沈阳计算机考试都学什么,沈阳计算机考研考什么科目
  8. app个人健康管理系统开源_开源会促进心理健康吗?
  9. MongoDB的默认用户名和密码是什么?
  10. Keras——用Keras搭建线性回归神经网络
  11. 限制页面被pc端访问
  12. 程序员需要学会宏观看待问题
  13. ai交互剧本_AI可以制作音乐,剧本和诗歌。 电影呢?
  14. 依山傍水,云淡风轻-----只是传说
  15. 假币问题python
  16. 算法策略 | MACD跨周期短线交易策略开发(股指+商品双版)
  17. 微信h5支付,微信外浏览器支付实现
  18. 2nd homework of OS
  19. 202107 VMware NSX-T培训笔记2(东西向网段间路由原理)
  20. OLED显示屏滚动函数编写

热门文章

  1. jquery选择器找到含有href属性的所有a标签
  2. 镜像与复制有什么区别_开发者如何快速精简容器云镜像?| 技术头条
  3. 小程序实现h5页面的微信支付
  4. Spring:Webflux响应式编程
  5. En-Tan-Mo(ETM)项目周报(8.2-8.8)
  6. ListView 联动 SideBar ,根据数据首字母进行排序
  7. ChatGPT教你面试阿里P6测试开发岗
  8. NSIS打包软件,初步使用心得
  9. 这个“安装 macOS xxx“应用程序副本已损坏,不能用来安装 macOS
  10. 《C语言》罗马数字问题