我有以下正则表达式:
.+?(=*)(myarray\()\{([\S| \|'.,]*)},\s*(\p{L}+)(.*\*\d+)
搜索此字符串并匹配此处显示的不同部分:
blahb.blah = myarray({-68,-67,-65,-62,-61,-59,-58,-56,-55,-53,-52,-51,-49,-48,-47,-46,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33,-32,-31,-30,-29,-29,-28,-27,-26,-26,-25,-24,-24,-23,-22,-22,-21,-21,-20,-20,-19,-19,-19,-18,-18,-18,-17,-17,-17,-16,-16,-16,-15,-15,-15,-14,-14,-14,-14,-13,-13,-13,-12,-12,-12,-11,-11,-11,-10,-10,-9.7,-9.4,-9.1,-8.8,-8.5,-8.2,-7.9,-7.5,-7.2,-6.9,-6.6,-6.3,-6,-5.7,-5.3,-5,-4.7,-4.4,-4.1,-3.8,-3.4,-3.1,-2.8,-2.5,-2.2,-1.9,-1.6,-1.2,-0.9,-0.6,-0.3,0,0.3,0.6,1,1.3,1.6,1.9,2.2,2.5,2.9,3.2,3.5,3.8,4.1,4.4,4.7,5.1,5.4,5.7,6}, x*456, 1);
https://regex101.com/r/frF0eC/7
然而,当我尝试在python中运行这个相同的正则表达式时,它不起作用。我想知道为什么?有没有关于python的东西与其他正则表达式系统不同?
以下是Python代码的示例:
import re
myarray = " blahb.blah = myarray({-68,-67,-65,-62,-61,-59,-58,-56,-55,-53,-52,-51,-49,-48,-47,-46,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33,-32,-31,-30,-29,-29,-28,-27,-26,-26,-25,-24,-24,-23,-22,-22,-21,-21,-20,-20,-19,-19,-19,-18,-18,-18,-17,-17,-17,-16,-16,-16,-15,-15,-15,-14,-14,-14,-14,-13,-13,-13,-12,-12,-12,-11,-11,-11,-10,-10,-9.7,-9.4,-9.1,-8.8,-8.5,-8.2,-7.9,-7.5,-7.2,-6.9,-6.6,-6.3,-6,-5.7,-5.3,-5,-4.7,-4.4,-4.1,-3.8,-3.4,-3.1,-2.8,-2.5,-2.2,-1.9,-1.6,-1.2,-0.9,-0.6,-0.3,0,0.3,0.6,1,1.3,1.6,1.9,2.2,2.5,2.9,3.2,3.5,3.8,4.1,4.4,4.7,5.1,5.4,5.7,6}, asd*456, 1); "
matchObj = re.search( r".+?(=*)(myarray\()\{([\S| \|'.,]*)},\s*(\p{L}+)(.*\*\d+)", myarray)
print matchObj
print "matchObj.group() : ", matchObj.group()
print "matchObj.group(1) : ", matchObj.group(1)
print "matchObj.group(2) : ", matchObj.group(2)
以下是Python脚本的在线示例:https://repl.it/EtP8/1
由于某种原因它正在搜索并返回None?知道为什么吗?
答案 0 :(得分:2)
您的python代码有错误,haystack字符串包含" myarray"而你的正则表达式是"子阵列"
re
模块中的@Casimir中提到的Unicode字符类不存在,您可以相应地使用[a-zA-Z]或\w
作为替换。
正在运行代码:http://ideone.com/kukNDw
import re
myarray = "blahb.blah = myarray({-68,-67,-65,-62,-61,-59,-58,-56,-55,-53,-52,-51,-49,-48,-47,-46,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33,-32,-31,-30,-29,-29,-28,-27,-26,-26,-25,-24,-24,-23,-22,-22,-21,-21,-20,-20,-19,-19,-19,-18,-18,-18,-17,-17,-17,-16,-16,-16,-15,-15,-15,-14,-14,-14,-14,-13,-13,-13,-12,-12,-12,-11,-11,-11,-10,-10,-9.7,-9.4,-9.1,-8.8,-8.5,-8.2,-7.9,-7.5,-7.2,-6.9,-6.6,-6.3,-6,-5.7,-5.3,-5,-4.7,-4.4,-4.1,-3.8,-3.4,-3.1,-2.8,-2.5,-2.2,-1.9,-1.6,-1.2,-0.9,-0.6,-0.3,0,0.3,0.6,1,1.3,1.6,1.9,2.2,2.5,2.9,3.2,3.5,3.8,4.1,4.4,4.7,5.1,5.4,5.7,6}, x*456, 1);"
matchObj = re.search( r".+?(=*)(myarray\()\{([\S| \|'.,]*)},\s*(\w+)(.*\*\d+)", myarray)
print matchObj
print "matchObj.group() : ", matchObj.group()
print "matchObj.group(1) : ", matchObj.group(1)
print "matchObj.group(2) : ", matchObj.group(2)