正则表达式里的?:是啥意思例如(?:a|b)
我也是找答案时看到的,发现这里回答的理论是的,但不好让人理解,我也结合其他地方的资料,才能理解他的答案。下面我用两个例子来说明 单引号里面的三个元字符之间的意思 ‘ () ' '\1' '?:' 其实我自己也是加深一下这块的印象
在一段英文里,我们需要匹配连续重复的单词,如 I'm lost lost. 这里发现lost重复了,当内容很多时
我们就用正则来 \b(\w+)\b\s+\1\b 来找这样连续重复单词
正则规则解释
\b匹配单词的开始
(\w+)匹配单词并存储一份单词 当后面有反向引用时 则可以调用这个存储的单词
\b匹配单词的结束
\s+一个或多个空格
\1这个是反向引用 引用前面括号里存储的单词 也就是 \w+
\b单词结束
了解了前面的 这时如果把?:加进去
\b(?:\w+)\b\s+\1\b
这个表达式就无效了 因为(?:\w) 这个单词虽可以被匹配但不会存储一份 后面出现的 \1 也不会调用前面括号里的单词 所以 表达式就失效了
那么(?:)有什么用呢
再举例简单说明一下
想在一篇文章中找"program"和"project"这两个单词
正则表达式可表示为 program|project
也可表示为 pro(gram|ject)
但用了()就表示会匹配括号里存在的内容且存储一份
用 | 隔开了 也就是说 gram和ject 都被存储了一份 但这样存储的内容是无意义的
所以表达式写成这样 pro(?:gram|ject)
一是显得比较简洁
二是不会存储无意义的内容
正则表达式里的?:是啥意思例如(?:a|b)相关推荐
- 正则表达式里转义字符_五分钟搞定正则表达式,如果没搞定,再加两分钟
五分钟搞定正则表达式,如果没搞定,再加两分钟 [这是 ZY 第 18 篇原创文章] 文章概览 一.正则表达式介绍 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简 ...
- 正则表达式里“-“中划线的使用注意
正则表达式里"-"中划线的使用注意 今天要匹配正则表达式,把非法的字符找出来,开始的写法是这个 [^A-Za-z0-9_.*-+%!],我的目的是把_.*-+%!这7个字符算合法字 ...
- oracle正则表达式包含但不含_正则表达式里字符串”不包含”匹配技巧 - 穿梭于偶然...
经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在 事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确.就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配,从而解决我们的问题 ...
- 藏在正则表达式里的陷阱
2019独角兽企业重金招聘Python工程师标准>>> 前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%.通过 Java ...
- Python 正则表达式里的单行s和多行m模式
Python 的 re 模块内置函数几乎都有一个 flags参数,规定了正则匹配时的各种策略模式,其中有两个模式:单行(re.DOTALL, 或者re.S)和多行(re.MULTILINE,或者re. ...
- python多行字符串变单行_Python 正则表达式里的单行s和多行m模式
Python 的 re 模块内置函数几乎都有一个 flags 参数,规定了正则匹配时的各种策略模式,其中有两个模式:单行(re.DOTALL, 或者re.S)和多行(re.MULTILINE, 或者r ...
- php正则屏蔽问号,正则表达式里问号的作用
正则表达式一直是我的弱项,一来因为用的比较少,所以每次碰到的时候,脑子里的两个小人儿就开始吵架:"又碰到了,又不会了,赶紧学习一下吧.""不会也没什么,不经常用,再说sp ...
- 关于正则表达式里含有空格的问题
做C++某个项目的时候,用到了正则表达式,当我想表达全是数字的时候,我的变量设置是这样的: regex reg("^[1-9][0-9] * $"); 判断时总是不能通过. 后面机 ...
- 如何在正则表达式里表达可能存在也可能不存在的内容?
开始 其实很简单, 在正则里将一些不确定的内容用括号包裹起来,再后面再加一对花括号即可. 看例子: start 1:hello 2:my 3:world end start 1:we 3:are 4: ...
最新文章
- delete后加 limit是个好习惯么 !
- 详解PyTorch编译并调用自定义CUDA算子的三种方式
- iOS架构-静态库.a 和.framework的区别(0)
- kettle 脚本 java_Kettle 执行SQL脚本
- python bind_Python bind-允许同时按下多个键
- 1176: C语言实验题――数组逆序
- CCF201709-1 打酱油
- 【汇编优化】之CPUID获取x86处理器信息
- unity打开摄像头
- Android实现计算器布局(表格布局)
- vba正则表达式入门
- Python海龟库write方法中形参font用法的记录
- 华为服务器系统图标,监控服务器图标
- Chrome启动参数最全集合
- 介绍我国计算机的发展的作文600字,五年级描写电脑的说明作文600字
- VOLATILE和队列
- 冷冻水和冷却水的区别
- Android WebView支持文件下载之调起浏览器下载(Java与Kotlin版)
- 【Linux】/etc/issue、/etc/issue.net和/etc/motd的区别
- Remoting学习
热门文章
- Swift 5新特性详解:ABI 稳定终于来了!
- webpack4升级指南
- VBS的开发利器---WMI信息绑定参考地址
- -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器...
- 请问这样写法,第二个container的内容怎么没有显示的呢?但是加上jumbotron就可以显示了,不明白。...
- 如何隐藏地址栏中的真实地址_如何删除Chrome地址栏记录?
- aes 加密_AES加密的安全问题
- byte数组转blob类型_Java类型相互转换byte[]类型,blob类型
- 源生php怎么打印,PHP如何实现云打印
- 一点php博客,PHP一点认识