正则表达测试器通过,但在 re 里报错…
資深大佬 : qazwsxkevin 2
getvarValue 这个函数没能写成万金油,但还是能正确析出遇到 JavaScript 的变量,今天遇到一个情况:
var xxx= yyy,对方书写的变量名和等号之间,没有任何字符,就无法析出内容了,于是改了一下正则式,
在测试器里是没问题,能匹配上的,但在 Python 里不行,会报错,请问是怎么回事呢?
谢谢解答了!
# 获取 str 内容中,JavaScript 格式的变量参数内容 def getvarValue(SrcStr,sStr,eStr): import re searchStr = "(?<={}[s|s+|]=[s|s+| ]).*?(?={})".format(sStr,eStr) #能应对标准的 JS 定义变量写法 tmpStr = re.findall(searchStr,SrcStr) if len(tmpStr) == 1: return str(tmpStr[0]) else: return str(tmpStr) SampleText = " var TeacherID= 667A28;" result = getvarValue(SampleText,'TeacherID',';') # 函数没有内容返回,在正则测试器里,确实无法匹配上, # 在正则测试里里面,改为(?<=TeacherID[s|s+|]?=[s|s+| ]).*?(?=;) # 验证匹配通过 在 Python 中改为: searchStr = "(?<={}[s|s+|]?=[s|s+| ]).*?(?={})".format(sStr,eStr) 就报错: raise error("look-behind requires fixed-width pattern") sre_constants.error: look-behind requires fixed-width pattern
请问应该怎么破?
大佬有話說 (3)