正则表达式中多个重复的值怎么定义开头?
问题描述:
[{"domazon","pature":false,"exate":1536346214,"httpOlse,"hostOlse,"name":"csm-hit","value":"tb:s-XRZ1FEWCK|1642869380468&t:1642869380469&adb:adblk_no"},{"domazon","pature":false,"exate":1741456214,"httpOlse,"hostOlse,"name":"csd-key","value":"eyJ3YXNtVGVzdGVkIjp0cnVlLCJ3YXNtQ29tcGF06MSwia2lkIjoiYjc5OGZkIiwia=="},{"domazon","pature":false,"exate":1741456214,"httpOlse,"hostOlse,"name":"x-acbin","value":""4AwgoEsrequpBhtVhr6lqXYSVBi3a4xa9Oq@nO3Gz8aqninbBQpOEDGPcECueaQt""}]
上面这串代码,我使用了
.?{"domazon","p."csd-key".?},
我只想要中间以{"domazon"开头到第一个}结尾的那一段,但是我的代码是从第一个匹配,如何才能只取中间的呢?
网友观点:
用正则表达式的话.*?(你要匹配的字符串).*?就行了
1 2 3 4 5 6 7 8 9 |
<span>import</span> re <span>strs</span> = '[{<!-- --><span>"domazon"</span>,<span>"pature"</span>:<span>false</span>,<span>"exate"</span>:<span>1536346214</span>,<span>"httpOlse,"</span>hostOlse,<span>"name"</span>:<span>"csm-hit"</span>,<span>"value"</span>:<span>"tb:s-XRZ1FEWCK|1642869380468&t:1642869380469&adb:adblk_no"</span>},{<!-- --><span>"domazon"</span>,<span>"pature"</span>:<span>false</span>,<span>"exate"</span>:<span>1741456214</span>,<span>"httpOlse,"</span>hostOlse,<span>"name"</span>:<span>"csd-key"</span>,<span>"value"</span>:<span>"eyJ3YXNtVGVzdGVkIjp0cnVlLCJ3YXNtQ29tcGF06MSwia2lkIjoiYjc5OGZkIiwia=="</span>},{<!-- --><span>"domazon"</span>,<span>"pature"</span>:<span>false</span>,<span>"exate"</span>:<span>1741456214</span>,<span>"httpOlse,"</span>hostOlse,<span>"name"</span>:<span>"x-acbin"</span>,<span>"value"</span>:<span>""</span><span>4</span>AwgoEsrequpBhtVhr6lqXYSVBi3a4xa9Oq@nO3Gz8aqninbBQpOEDGPcECueaQt<span>""</span>}]' <span>str=</span> '.*?adblk_no<span>"},(.*?),{"</span>domazon<span>".*?' s = re.match(str,strs) print(s.group(1)) </span> |
试了.*?{"domazon","p."csd-key".?},不起作用
你可以用这个正则表达式,(\\{.*\\}),
匹配中间的那段
1 2 3 |
'[{<!-- --><span>"domazon"</span>,<span>"pature"</span>:false,<span>"exate"</span>:1536346214,<span>"httpOlse,"</span>hostOlse,<span>"name"</span>:<span>"csm-hit"</span>,<span>"value"</span>:<span>"tb:s-XRZ1FEWCK|1642869380468&t:1642869380469&adb:adblk_no"</span>},{<!-- --><span>"domazon"</span>,<span>"pature"</span>:false,<span>"exate"</span>:1741456214,<span>"httpOlse,"</span>hostOlse,<span>"name"</span>:<span>"csd-key"</span>,<span>"value"</span>:<span>"eyJ3YXNtVGVzdGVkIjp0cnVlLCJ3YXNtQ29tcGF06MSwia2lkIjoiYjc5OGZkIiwia=="</span>},{<!-- --><span>"domazon"</span>,<span>"pature"</span>:false,<span>"exate"</span>:1741456214,<span>"httpOlse,"</span>hostOlse,<span>"name"</span>:<span>"x-acbin"</span>,<span>"value"</span>:<span>""</span><span>4</span>AwgoEsrequpBhtVhr6lqXYSVBi3a4xa9Oq@nO3Gz8aqninbBQpOEDGPcECueaQt<span>""</span>}]<span>'.match</span>(<span><span>/</span></span>[{][<span>^</span>{]+[}]/g) |
learn-regex:一个帮你掌握正则表达式的开源项目
项目地址:https://github.com/zeeshanu/learn-regex
什么是正则表达式?
正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子.
一个正则表达式是在一个主体字符串中从左到右匹配字符串时的一种样式. 例如"Regular expression"是一个完整的句子, 但我们常使用缩写的术语"regex"或"regexp". 正则表达式可以用来替换文本中的字符串,验证形式,提取字符串等等.
想象你正在写一个应用, 然后你想设定一个用户命名的规则, 让用户名包含字符,数字,下划线和连字符,以及限制字符的个数,好让名字看起来没那么丑. 我们使用以下正则表达式来验证一个用户名:
以上的正则表达式可以接受 john_doe, jo-hn_doe, john12_as. 但不匹配Jo, 因为它包含了大写的字母而且太短了.
目录
- 1. 基本匹配
- 2. 元字符
- 2.1 点运算符 .
- 2.2 字符集
- 2.2.1 否定字符集
- 2.3 重复次数
- 2.3.1 * 号
- 2.3.2 号
- 2.3.3 ? 号
- 2.4 {} 号
- 2.5 (...) 特征标群
- 2.6 | 或运算符
- 2.7 转码特殊字符
- 2.8 锚点
- 2.8.1 ^ 号
- 2.8.2 $ 号
- 3. 简写字符集
- 4. 前后关联约束(前后预查)
- 4.1 ?=... 前置约束(存在)
- 4.2 ?!... 前置约束-排除
- 4.3 ?&lt;= ... 后置约束-存在
- 4.4 ?&lt;!... 后置约束-排除
- 5. 标志
- 5.1 忽略大小写 (Case Insensitive)
- 5.2 全局搜索 (Global search)
- 5.3 多行修饰符 (Multiline)
- 额外补充
- 贡献
- 许可证
1. 基本匹配
正则表达式其实就是在执行搜索时的格式, 它由一些字母和数字组合而成. 例如: 一个正则表达式 the, 它表示一个规则: 由字母t开始,接着是h,再接着是e.
"the" => The fat cat sat on the mat.
1. 带 [亲测] 说明源码已经被站长亲测过!
2. 下载后的源码请在24小时内删除,仅供学习用途!
3. 分享目的仅供大家学习和交流,请不要用于商业用途!
4. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
5. 本站所有资源来源于站长上传和网络,如有侵权请邮件联系站长!
6. 没带 [亲测] 代表站长时间紧促,站长会保持每天更新 [亲测] 源码 !
7. 盗版ripro用户购买ripro美化无担保,若设置不成功/不生效我们不支持退款!
8. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
9. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
10.如果您购买了某个产品,而我们还没来得及更新,请联系站长或留言催更,谢谢理解 !
GG资源网 » 正则表达式中多个重复的值怎么定义开头?