我有以下正则表达式
(?<=<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)
[]
答案 0 :(得分:0)
我用
得到“正确”的输出re.findall(r'(?<=<TEXT>).*?(?=</TEXT>)', text, re.DOTALL)
我认为re
中的默认值与pythex相同,但显然不是。
答案 1 :(得分:0)
看起来你真的应该考虑使用令牌解析器而不是正则表达式 - 这是xml还是html输入?在这种情况下,你可能想要考虑这个问题&amp;最佳答案:How Do I Parse XML in Python