正则表达式?

key1=abc&key2=bcd&key3=efg正则表达式^(.*?)=匹配到的是key1=,怎么之匹配key1这个参数... key1=abc&key2=bcd&key3=efg
正则表达式^(.*?)=
匹配到的是 key1= ,怎么之匹配key1 这个参数
展开
 我来答
againinput4
2021-01-14 · TA获得超过2407个赞
知道大有可为答主
回答量:1446
采纳率:70%
帮助的人:641万
展开全部

简答:把原先的

^(.*?)=

的最后的 等于号= 变成 

(?=xxx): (positive) look ahead (assertion)=正向肯定断言

即可。


详解:

完整的正则是:

^(.*?)(?==)

即可,只匹配到

key1

具体解释:

(?=xxx)

表示,匹配(后面的字符串符合) xxx的情况,但是不包含在匹配的结果中

所以此处就是,匹配

key1=

中的 =,但结果中不包含 =

就变成你要的:结果中只包含 key1 了。


对应python的演示代码:


 python 

Python 3.8.0 (default, Jan  6 2020, 10:33:50) 

[Clang 10.0.1 (clang-1001.0.46.4)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import re

>>> inputStr = "key1=abc&key2=bcd&key3=efg"

>>> foundKey1 = re.search("^(.*?)(?==)", inputStr)

>>> print(foundKey1)

<re.Match object; span=(0, 4), match='key1'>

>>> key1Str = foundKey1.group(1)

>>> print(key1Str)

key1


引申:

正向肯定断言 属于 环视断言

具体详见我的教程:

环视断言 · 应用广泛的超强搜索:正则表达式

秒懂百科精选
高粉答主

2021-01-29 · 每个回答都超有意思的
知道答主
回答量:60.8万
采纳率:14%
帮助的人:3.2亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
松崎春2036
2020-04-03 · 超过31用户采纳过TA的回答
知道答主
回答量:57
采纳率:80%
帮助的人:20.5万
展开全部
把=改成(?==)
其他不变,
试一下看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GTA小鸡
高粉答主

2020-04-02 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
你想提取什么?key1对应的值,还是所有的key对应的值,还是key1本身?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式