我有这个正则表达式,据说是检测HTML标签的全部结果。我在这里找到了它:
http://haacked.com/archive/2004/10/25/usingregularexpressionstomatchhtml.aspx/
原始正则表达式如下:
</?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)/?>
当我在它周围添加单引号时,它变为:
'</?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)/?>'
但这会将内部('.\*?')
作为与我想要制作的字符串不同的实体。任何想法如何解决这一问题?逃避那些内在的引号。*?因为我在扫描字符串错误时获得了EOL,所以似乎没有帮助
有什么想法吗?
答案 0 :(得分:1)
您可以使用双引号引用整个正则表达式。
>>> obj = re.compile(r"</?\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)/?>")
>>> obj.pattern
'</?\\w+((\\s+\\w+(\\s*=\\s*(?:\\".*?\\"|\'.*?\'|[^\'\\">\\s]+))?)+\\s*|\\s*)/?>'
注意我已将正则表达式中的双引号转义为\"