我想在以下字符串中匹配特定部分(粗体):
我出来了这个正则表达式/\\doc(.*?)\\in/g
https://regex101.com/r/dV7mF4/1
但它与第一个字符串 doc1,doc2 不匹配。我需要添加到我的正则表达式以匹配上面的所有这些字符串?
答案 0 :(得分:1)
您可以在正向前瞻中使用替换来设置上下文:
\\doc(.*?)(?=$|\\in)
^^^^^^^^^^
请参阅regex demo
(?=$|\\in)
将允许.*?
匹配字符串的结尾($
分支)或第一个\in
(第二个分支)。< / p>
作为替代方案,您可以在\in
之后指定除\doc
之外的任何内容:
\\doc([^\\]*(?:\\(?!in)[^\\]*)*)
此处[^\\]*(?:\\(?!in)[^\\]*)*
匹配除\
以外的零个或多个字符,然后0 {+ 1}}的序列未跟\
后跟{0}以外的字符{ {1}}。基本上,任何不是in
的文本。
答案 1 :(得分:1)
将您的正则表达式更改为:import lxml.etree as et
x = et.parse("test.xml", parser=et.HTMLParser(remove_comments=True))
print(et.tostring(x))