Python re.search换行符

时间:2015-08-19 09:53:24

标签: python regex

我正在尝试搜索并找到在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

3 个答案:

答案 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