Python 匹配“;没有这个",;

Python 匹配“;没有这个",;,python,regex,Python,Regex,我需要删除所有中只有的 但如何做到这一点呢 import re text = """ <td><p>111</p></td> <td><p>111</p><p>222</p></td> """ text = re.sub(r'<td><p>(??no</p>inside??)</p></td>'

我需要删除所有

中只有

但如何做到这一点呢

import re
text = """
    <td><p>111</p></td>
    <td><p>111</p><p>222</p></td>
    """
text = re.sub(r'<td><p>(??no</p>inside??)</p></td>', r'<td>\1</td>', text)
重新导入
text=”“”
111

111

222

""" text=re.sub(r'(?内部无)

,r'\1',text)
没有内部

我如何匹配

我会用。我偷了以下代码片段,您应该可以从中修改并为您工作:

from xml.dom import minidom

doc = minidom.parse(myXmlFile)
for element in doc.getElementsByTagName('MyElementName'):
    if element.getAttribute('name') in ['AttrName1', 'AttrName2']:
        parentNode = element.parentNode
        parentNode.insertBefore(doc.createComment(element.toxml()), element)
        parentNode.removeChild(element)
f = open(myXmlFile, "w")
f.write(doc.toxml())
f.close()

谢谢@Ivo Bosticky

虽然将regexps与HTML一起使用是不好的,但匹配不包含给定模式的字符串本身就是一个有趣的问题

让我们假设我们想要匹配一个以
a
开头,以
z
结尾的字符串,并且仅当字符串
未在其中找到时,才取出介于两者之间的任何内容


以下是我的观点:
“a((?:(?)我绝对推荐使用BeautifulSoup来实现这一点。它是一个python HTML/XML解析器


不太清楚为什么要删除没有结束标记的p标记。 但是,如果这是一次清理代码的尝试,那么BeautifulSoup的一个优点是可以为您清理HTML:

from BeautifulSoup import BeautifulSoup
html = """
<td><p>111</td>
<td><p>111<p>222</p></td>
"""
soup = BeautifulSoup(html)
print soup.prettify()
从美化组导入美化组
html=”“”
111
111222

""" soup=BeautifulSoup(html) 打印汤。美化

这并不能消除不匹配的标记,但可以修复丢失的标记。

不要用正则表达式解析HTML。请……您可以将BeautifulSoup视为实际的(X)HTML解析器,但试图用正则表达式处理HTML是个坏主意。你只是在问一些令人头痛的问题。我应该用什么来解决这个问题?DOM会不会太过分了?嗨,乔。请参阅这篇关于为什么不用正则表达式解析HTML的文章:,以及关于用正则表达式解析HTML的文章,请参阅此问题的公认答案: