我正在尝试搜索并找到在value =之后找到的字符串。当它们只是提供的字符串中的一个空格时,我成功地这样做了,比如这个
id="test" value="123"
但是,在下面的情况下,它们似乎是10个空格部分,包括正在创建的新行。
id="test"
value="123"
下面的代码找不到value =的字符串,我无法弄清楚如何让它工作
searchObj = re.search( r'id=\"test\"\s{10,}value=\"(.*?)\"', var, re.M|re.I)
if searchObj:
var4 = searchObj.group()
print 3
print var4
else:
print "Nothing found!!"
上面的代码不打印3或实际的var4
答案 0 :(得分:2)
searchObj = re.search( r'id="test"\s+value="(.*?)"', var, re.I)
使用此功能。\s{10,}
仅在10
或更多时匹配。因此+
。
x='''id="test"
value="123"'''
print re.search(r'id="test"\s+value="(.*?)"',x, re.I)
输出:<_sre.SRE_Match object at 0x00000000022AF120>
答案 1 :(得分:0)
你的代码对我来说很好。
然而,通常最好在匹配空格时更加宽容,因此更好的模式将是
r'id=\"test\"\s+value=\"(.*?)\"'
+
后面的\s
表示您要匹配一个或多个空白字符。
答案 2 :(得分:0)
作为解决此问题的更通用方法,可以使用以下类型的正则表达式来接收这两个项目:
test = """
id="test"
value="123"
"""
reIdValue = re.search(r'\s+id="(.*?)"\s+value="(.*?)"', test)
print reIdValue.groups()
print reIdValue.group(1)
print reIdValue.group(2)
这会显示:
('test', '123')
test
123