正则表达式在python中没有命中

时间:2016-02-02 16:38:29

标签: python regex

我有以下正则表达式

(?<=<TEXT>).*?(?=</TEXT>)

应该在<TEXT></TEXT>之间找到任何内容。

我将我的字符串粘贴到http://pythex.org/上它确实有效,但是python中的以下实现没有找到任何内容

import re
re.findall(r'(?<=<TEXT>).*?(?=</TEXT>)', text)

其中text包含我粘贴到窗口的内容(使用调试器,粘贴变量输出)。我需要注意一些特别的东西吗?

一些额外的输出

>>> pattern = re.compile(r"(?<=<TEXT>).*?(?=</TEXT>)")
>>> print(pattern)
re.compile('(?<=<TEXT>).*?(?=</TEXT>)')
>>> re.DOTALL
16
>>> pattern.findall(text)
[]

2 个答案:

答案 0 :(得分:0)

我用

得到“正确”的输出
re.findall(r'(?<=<TEXT>).*?(?=</TEXT>)', text, re.DOTALL)

我认为re中的默认值与pythex相同,但显然不是。

答案 1 :(得分:0)

看起来你真的应该考虑使用令牌解析器而不是正则表达式 - 这是xml还是html输入?在这种情况下,你可能想要考虑这个问题&amp;最佳答案:How Do I Parse XML in Python