首页 > 其他分享 >正则表达式注意事项

正则表达式注意事项

时间:2023-03-22 18:15:38浏览次数:45  
标签:正则表达式 捕获 理解 分组 注意事项 exp1 前瞻

问题

正则表达式一段时间不常用就经常忘掉,这里记录一下容易忘掉的知识点。

?=和?:和?!和?<=和?<!

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

// 前瞻:
exp1(?=exp2) 查找包含exp1和exp2的字段,只会返回符合规则的exp1
// 后顾:
(?<=exp2)exp1 查找位于exp2后面的exp1,只返回exp1
// 负前瞻:
exp1(?!exp2) 查找exp1,同时后面不是exp2的exp1,只返回exp1
// 负后顾:
(?<!exp2)exp1 查找exp1,但前面不是exp2的exp1,只返回exp1

// 例子
// ?=
"hello---hello666hellomm".replace(/hello(?=(\d+))/g,"")   // 'hello---666hellomm'

// ?<=
"hello---hello666hellomm".replace(/(?<=(\d+))hello/g,"")  // 'hello---hello666mm'

// ?!
"hello---hello666hellomm".replace(/hello(?!(\d+))/g,"")   // '---hello666mm'

// ?<!
"hello---hello666hellomm".replace(/(?<!(\d+))hello/g,"")  // '---666hellomm'

// ?:
"hello---hello666hellomm".replace(/(hello(\d+))/g,"$2")   // 'hello---666hellomm'
"hello---hello666hellomm".replace(/(?:hello(\d+))/g,"$1") // 'hello---666hellomm'
// 第一个例子,用了两个括号,匹配了hello+数字,$2代表留下被第二个括号捕获的内容(数字)。
// 第二个例子在第一个括号内加了 ?:,就消除掉了他的捕获,那么可以直接用$1来替换数字了。


要理解?:则需要理解捕获分组和非捕获分组的概念:
()表示捕获分组,()会把每个分组里的匹配的值保存起来,使用$n(n是一个数字,表示第n个捕获组的内容)
(?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来

文章地址:

标签:正则表达式,捕获,理解,分组,注意事项,exp1,前瞻
From: https://www.cnblogs.com/GoodMemoryBlog/p/17244968.html

相关文章

  • SQL 分类及 mysql安装及卸载注意事项
    SQLstructuralquerylanguage分类DML数据操纵语言datamanipulationlanguageinsertupdatedeleteselectDDL数据定义语言datadefinitionlan......
  • Python中使用正则表达式以及正则表达式匹配规则
    ​1导库importre2使用模板re_pattern=re.compile(pattern,flags=0)result=re.findall(re_pattern,string)3说明参数描述pattern匹配的正则......
  • localStorage 的注意事项与初识 Ajax
    localStorage的注意事项localStorage的存储期限localStorage是持久化的本地存储,除非手动请求(比如通过js删除,或者清除浏览器缓存),否则数据是永远不会......
  • 笔记-应用向量自回归模型脉冲效应函数的注意事项
    计量经济模型Econometricmodels2022-07-2718:51发表于江苏https://mp.weixin.qq.com/s/_ZVeVySe319Ap4UvvmnHWA向量自回归模型,VectorAutoregressionModels,VAR,......
  • 正则表达式
    [0,1]^[01]$[3,100]^[3-9]$|^(?:[1-9]\\d|100)$[1,1000]^([1-9][0-9]{0,2}|1000)$[1,10000]^([1-9][0-9]{0,3}|10000)$[0,99]^([0-9][0-9]{0,1})$[0,......
  • Cookie的封装-2与Cookie 的注意事项
    Cookie的封装-2<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Cookie的封装</title></head><body><buttonid="cn">......
  • javaweb-Cookie、Kaptcha、正则表达式
    资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战),本人才疏学浅,记录笔记以供日后回顾由于是多个视频内容混合在一起,因此只放了第一个链接视频链接知识点1.Cook......
  • STM32F103 高级定时器的PWM驱动电机注意事项
    此前一直用通用定时器的PWM驱动电机,因此初始化结构体只有如下几项,今天用TB6612驱动电机,用TIM1-CH4的PWM,结果发现设置完毕后电机不转。//OCInitStructTIM_OC......
  • 正则表达式
    pattern.split测试结果pattern.matcher测试结果......
  • SMT贴片流程及注意事项
    SMT:英文【SurfaceMountedTechnology】的缩写,中文名称表面贴焊(装)技术,是通过专业的工序将电子元器件贴装在PCB板上并加以焊接组装的电路装连技术。SMT应该是电子组装工业自......