我有多个文本块被这些html标记包围:
<code type="block" lexer="python"> my text </code>
我需要用其他文本替换它们(在这里的最小示例中,是一个简单的字符串:“REPLACEMENT”)。我提供了两个示例块:一个被正确替换,另一个没有:我不明白为什么,它们似乎没有什么不同。我包括的测试
print(old_blockCode, "\n\n", new_blockCode, "\n_______", "\n\n")
让我觉得这个问题回复sub,但我不明白为什么。你知道吗
#!/usr/bin/python3
import re
fileContent = """<code type="block" lexer="python">import re
for old_code, new_code in zip(codes_list, highlighted_list):
pattern = re.sub(old_code, new_code, filecontent)
pattern.append(pa)</code>
<code type="block" lexer="python">import re
inputFile = "test"
outputFile = "testout"</code>
"""
blockCodes_list = []
blockHighlighted_list = []
blockCodes = re.finditer(r'<code type="block" lexer="python">(.*?)</code>', fileContent, flags=re.DOTALL)
for match in blockCodes:
block = match.group(1)
blockCodes_list.append(block)
blockHighlighted = "REPLACEMENT"
blockHighlighted_list.append(blockHighlighted)
newfileContent = fileContent
for old_blockCode, new_blockCode in zip(blockCodes_list, blockHighlighted_list):
newfileContent = re.sub(old_blockCode, new_blockCode, newfileContent)
print(old_blockCode, "\n\n", new_blockCode, "\n_______", "\n\n")
print(newfileContent)
<code type="block" lexer="python">REPLACEMENT</code>
<code type="block" lexer="python">REPLACEMENT</code>
<code type="block" lexer="python">import re
for old_code, new_code in zip(codes_list, highlighted_list):
pattern = re.sub(old_code, new_code, filecontent)
pattern.append(pa)</code>
<code type="block" lexer="python">REPLACEMENT</code>
它完全按照你的要求做了。您希望文本以
<code…>
标记开头,后跟一个anythings字符串,后跟</code>
。它就是这么做的:这是格言“不能用正则表达式解析XHTML”的特例。正则表达式根本无法匹配嵌套组。下面可能会有答案,他们说你可以用非贪婪限定符,但那是错误的。你知道吗
使用XML解析器。你知道吗
相关问题 更多 >
编程相关推荐