正则表达式中?=等的简单使用

关于正则表达式 ?= ?: ?! 这些符号的用处

今天写web作业的时候遇到一个问题,如何使用提取url中请求的html,css和js的请求
于是我使用了正则表达式来做,前面一直没搞懂 ?= ?: ?!这几个符号是的用处,今天好像清晰了不少,记录一下
首先是要求
如何使用正则表达式匹配 /[字符串].html 中的 [字符串]

首先我是这样写的
let css = res.url.match(/^\/.+.css$/)

确实能匹配到 /index.html 但是 css[0] = '/index.html' 但是得到的是全匹配的字符串
这里可以使用 ()来分组匹配项,也能得到中间的字符串,不过下面用?= ?!这些符号来实现

要提取出 index 就需要用到 ?: ?= 这些符号 不匹配最后面的 ‘.html’

?= (非获取匹配,正向肯定预查询)

let hrml = res.url.match(/^\/.+(?=.css$)/)
相反的 如果要去掉前面多的 / 则使用下面的

?<= (非获取匹配,反向肯定预查询) 跟正向的预查寻就多了个 <

let html = res.url.match(/(?<=^\/).+.css$/)
上面2个正则表达式合起来就能只完成 字符串匹配且只保留中间要的字符串
let html = urlObj.pathname.match(/(?<=^\/).+(?=\.html$)/);
?=是肯定查询 那?!就很明显就是否定的查询 以下是例子
str.match(/good(?!morning)/)

这个正则表达式匹配的是 'good'+(不是morning) 的句子
goodmorning 就不能匹配
goodafternoon 能匹配且 match以后拿到的是 good

str.match(/(?<=state)ment)/)

这个正则表达式匹配的是 (不是state)+'ment' 的句子 且match拿到的是 morning
statement 就不能匹配
document 能匹配且 match以后拿到的是 ment

?:不捕获分组

这个写得很明白易懂 不捕获分组
这个的匹配效果和不加是一样的,位于不同的是match的时候,这个分组不会出现在结果数组里

总结

使用正则表达式匹配的时候
如果只要匹配模式字符串的一部分,可以使用以上的这些符号
如果要去除的字符串在保留串的前面,使用反向的预匹配 ?<=
如果在后面则使用正向的预匹配 ?=
!则表示非的意思 <表示的是反向

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python正则表达式匹配等号后面的内容可以使用以下方法: 首先,使用re模块的search()函数来搜索等号后面的内容。search()函数会在字符串搜索与正则表达式模式匹配的第一个位置,并返回一个匹配对象。可以使用这个匹配对象来进一步提取等号后面的内容。 其次,使用正则表达式模式来匹配等号后面的内容。可以使用等号后面的内容的特征来构建正则表达式模式。例如,如果等号后面的内容是一个字符串,可以使用双引号或单引号作为匹配模式。如果等号后面的内容是一个数字,可以使用\d+作为匹配模式。可以根据具体的等号后面内容的规律构建自己的正则表达式模式。 最后,使用group()方法来获取匹配到的等号后面的内容。一旦找到了匹配的模式,可以使用group()方法来提取在正则表达式定义的内容。 以下是示例代码: ```python import re # 示例字符串 s = "x = 10" # 正则表达式模式 pattern = r"\s*=\s*(.+)" # 搜索等号后面的内容 match = re.search(pattern, s) # 提取等号后面的内容 if match: content = match.group(1) print(content) ``` 这个代码使用正则表达式模式"\s*=\s*(.+)"来匹配等号后面的内容。其,\s*表示零个或多个空格,=表示等号,\s*表示零个或多个空格,(.+)表示至少一个字符。在示例字符串"x = 10"正则表达式成功匹配到等号后面的内容"10",并通过group()方法提取出来。最后将提取到的内容打印出来。 这个方法可以根据具体的需求和等号后面内容的规律进行相应的修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值