吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1864|回复: 18
收起左侧

[求助] python 正则表达式 前置匹配语法请教

[复制链接]
qanniu 发表于 2020-11-23 15:20
本帖最后由 qanniu 于 2020-11-23 17:36 编辑

小弟想实现如下匹配:
前置匹配: SV=一串数字,然后空格若干,然后window换行\n\r
然后匹配: 后面的 BV=一串数字
示例:SV=5.37 \n\rBV=10.33

用如下正则表达式无法匹配,请教大家该如何用前置匹配语法(?<=)实现:
(?<=SV\=\d+\.\d+\s+?\n\r)BV=



[Bash shell] 纯文本查看 复制代码
{
     {91,1280,1056, 0, 0, 0},  //TV = 13.42(9 lines)  AV=2.28 SV=5.37 
BV=10.33
     {101,1280,1032, 0, 0, 0},  //TV = 13.27(10 lines)  AV=2.28 SV=5.33 
BV=10.22


=======

结帖。

参考 #8 楼大佬lijt16 的解释。
#12 楼我有补充测试说明。


关键词:
前置匹配
不支持变长的后发断言
raise error("look-behind requires fixed-width pattern")零宽断言

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

magic78 发表于 2020-11-23 15:43
你要取啥啊 完全看不出你的目的
 楼主| qanniu 发表于 2020-11-23 15:48
magic78 发表于 2020-11-23 15:43
你要取啥啊 完全看不出你的目的

谢谢回复。

需求:
类似这样的字符串,青色字符串做前置匹配,红色字符串为匹配正文。
示例:SV=5.37 \n\rBV=10.33
lXSATANXt 发表于 2020-11-23 15:54
(?<=SV=\d+\.*\d*\s*\n)BV=\d+\.*\d*
不知道是不是你要的
微信截图_20201123155327.png
magic78 发表于 2020-11-23 15:57
本帖最后由 magic78 于 2020-11-23 16:00 编辑

去掉\R就可以 你要BV那断言BV不久好了
lijt16 发表于 2020-11-23 16:01
[Python] 纯文本查看 复制代码
import re

s = 'SV=5.37 \n\rBV=10'
par = 'SV=.+?(BV=\d+\.?\d*)'
result = re.compile(par, re.S).findall(s)
print(result)



这样不行么?那个什么前置匹配是什么
冥界3大法王 发表于 2020-11-23 16:02
楼主,你没有说明白!
源字符串是啥?
最终哪些要匹配到!
然后才是你的问题。
建议先RegexBuddy自行测试,不会再请教。
lijt16 发表于 2020-11-23 16:10
本帖最后由 lijt16 于 2020-11-23 16:22 编辑

lijt16 发表于 2020-11-23 16:01
[Python] 纯文本查看 复制代码
import re [/indent][indent]s = 'SV=5.37 \n\rBV=10.22'[/indent]par = '(?<=SV=).+?(BV=\d+\.?\d*)'
result = re.compile(par, re.S).findall(s)
print(result)




python的re模块并不支持变长的后发断言,只支持定长的后发断言。
你的正则表达式中前部分是不固定长度的,因此会出错,因为不确定SV=后面数字的长度,因此\s+?\n\r不能放入断言。
lijt16 发表于 2020-11-23 16:20
lijt16 发表于 2020-11-23 16:10
lijt16 发表于 2020-11-23 16:01
[mw_shl_code=python,true]import re s = 'SV=5.37 \n\rBV=10.22'par = ' ...

编辑器bug真多,总是多出莫名其妙的字符来。
 楼主| qanniu 发表于 2020-11-23 17:07

感谢兄台。
就是您理解的意思。
遇到奇怪的问题。
oschina 网页匹配正常,但notepad++ 匹配异常。
如下图。



另外,/r/n (windows)还是仅仅/n (linux) 不是关注的点。
我关注在为什么notepad++ 这样的匹配时异常的。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 11:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表