要理解?=和?!,首先需要理解前瞻,后顾,负前瞻,负后顾四个概念:

前瞻:
exp1(?=exp2) 查找exp2前面的exp1
后顾:
(?<=exp2)exp1 查找exp2后面的exp1
负前瞻:
exp1(?!exp2) 查找后面不是exp2的exp1
负后顾:
(?<!=exp2)exp1 查找前面不是exp2的exp1
1
2
3
4
5
6
7
8
举例:

"中国人".replace(/(?<=中国)人/, "rr") // 匹配中国人中的人,将其替换为rr,结果为 中国rr
"法国人".replace(/(?<=中国)人/, "rr") // 结果为 法国人,因为人前面不是中国,所以无法匹配到
1
2
要理解?:则需要理解捕获分组和非捕获分组的概念:

()表示捕获分组,()会把每个分组里的匹配的值保存起来,使用$n(n是一个数字,表示第n个捕获组的内容)
(?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来
1
2
举例:

// 数字格式化 1,123,000
"1234567890".replace(/\B(?=(?:\d{3})+(?!\d))/g,",") // 结果:1,234,567,890,匹配的是后面是3*n个数字的非单词边界(\B)
1
2
千位分割符的理解
---------------------
作者:lucky happy
来源:CSDN
原文:https://blog.csdn.net/csm0912/article/details/81206848
版权声明:本文为博主原创文章,转载请附上博文链接!

正则表达式中?=和?:和?!的理解相关推荐

  1. python原生字符串可以参与比较_正则表达式中对于原生字符串的理解

    在正则表达式中,有些字符是有特殊意义的字符.因此如果想要匹配这些字符,那么就必须使用反斜杠进行转义.比如$代表的是以...结尾,如果想要匹配$,那么就必须使用\$.示例代码如下: text = &qu ...

  2. 【超详总结/理解:正则表达式】特点/元字符/正则表达式中的标志位-flag/RegExp/重复操作与后向引用/匹配模式/表达邮箱/正则表达式对象的方法/利用正则表达式限制网页表单里的文本框输入内容

    文章目录 正则表达式: 正则表达式的用途 正则表达式的组成-元字符 正则表达式的特点 正则表达式中的标志位-flag JavaScript中的正则表达式解析 RegExp 定义 RegExp RegE ...

  3. 正则表达式中的非捕获组是什么?

    非捕获组(即(?:) )如何在正则表达式中使用,它们有什么用? #1楼 在复杂的正则表达式中,您可能会希望使用大量的组,其中一些用于重复匹配,而另一些则提供反向引用. 默认情况下,与每个组匹配的文本会 ...

  4. Java 正则表达式中为什么反斜杠“\“需要用“\\\\”表示

    正则表达式语法 在其他语言中,\\(两个斜杠) 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义. 在 Java 中,\\ (两个斜杠)表示:我要插入一个正则表达式 ...

  5. Python字符串和正则表达式中的反斜杠(‘\‘)问题

    在Python普通字符串中 在Python中,我们用''来转义某些普通字符,使其成为特殊字符,比如 In [1]: print('abc\ndef') # '\n'具有换行的作用 abc defgIn ...

  6. python正则表达式中的转义字符_python 正则表达式之转义字符

    最近在整理python相关的知识,使用python对网站进行爬取数据的时候,需要使用到转义字符,之前对转义字符理解一直比较模糊,并且在python中还有一个叫原生字符r.所以通过网上调查资料对该内容进 ...

  7. DOS中的 及 用正则表达式中的什么替掉

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! DOS中 ...

  8. 《正则表达式经典实例(第2版)》——2.18 向正则表达式中添加注释

    本节书摘来自异步社区<正则表达式经典实例(第2版)>一书中的第2章,第2.18节,作者: [美]Jan Goyvaerts , Steven Levithan著,更多章节内容可以访问云栖社 ...

  9. JAVA 中转义符的理解

    生物信息中有时候会遇到JAVA写的程序,今天阅读源码的时候发现对于正则中的转义符不好理解,后来查资料后终于弄明白了,这里详细说明一下: 字符串的表示有三种方法:1.直接单字符,例如"A&qu ...

最新文章

  1. Windows 10 系统安装教程
  2. 11.C程序内存空间分配
  3. TCP/IP / PDU 是什么
  4. CG CTF WEB pass check
  5. mysql修改密码后无法启动_mysql服务无法启动与强制修改密码指南-Go语言中文社区...
  6. python最小二乘法拟合_Python 普通最小二乘法(OLS)进行多项式拟合
  7. datatable 创建列赋值_DataTable创建行和列,DataReader读取
  8. 【ArcGIS遇上Python】栅格影像批量除以10000
  9. Java 7中对String.substring的更改
  10. 在C语言中023是八进制数,C语言总结
  11. .vimrc示例文件
  12. loadrunner:关联操作
  13. 工作队列 ( workqueue )
  14. 如何用python制作云词图
  15. advised by   org.springframework.transaction.interceptor.TransactionInterceptor.invoke.........
  16. window服务器cpu过高的排查_生产服务器CPU占用率过高排查过程
  17. 【无人机摄影测量技术必备知识】地面像控点布设经验整理-大比例尺
  18. 解决Win10插入耳机没声音
  19. 电脑端微信可以打开微信小程序了
  20. springboot基于微信小程序的宿舍管理系统

热门文章

  1. docker报错:driver failed programming external connectivity on endpoint, iptables:No chain by that name
  2. 【JavaScript总结】JavaScript语法基础:DOM
  3. 机房重构——报表问题总结
  4. linux pytorch 快速安装
  5. LeetCode简单题之检查整数及其两倍数是否存在
  6. LeetCode简单题之键盘行
  7. Camera噪声问题
  8. MindSpore模型推理
  9. 压缩人工智能的数据值
  10. NVIDIA安培架构