我从包含换行符(在本例中为 \N)和我不想保留的其他子字符串的文本文件中获取字符串。在换行符的情况下,我可以使用...
re.search('\\\\N', string)
匹配它们,但我想知道如何匹配字符串的其余部分。正如我所说,我需要用其他子字符串来做。我试着做...
re.search('^\\\\N', string)
但这没有返回匹配项。我猜它实际上试图匹配一个以'\'开头的'N',而后者又以'\'以外的任何字符开头。
如何匹配与我传递的正则表达式不匹配的任何内容?
我将假设您希望逐行进行此匹配。描述如何执行此操作的最佳方法是举个例子。假设我有以下文件test.txt:
{'name': 'Bryan', 'age': 34, 'male': True, 'hometown': 'Boston'}
{'name': 'Anna', 'age': 25, 'male': False, 'hometown': 'Chicago'}
{'name': 'Jeff', 'age': 47, 'male': True, 'hometown': 'Vancouver'}
{'name': 'Maria', 'age': 58, 'male': False, 'hometown': 'Madrid'}
对于每一行,我想匹配与正则表达式不匹配的任何内容:
r" 'age': \d+,"
所以对于第一行,那将是:
{'name': 'Bryan', 'male': True, 'hometown': 'Boston'}
本质上,我们只是用r" 'age': \d+,"空字符串替换正则表达式,所以:
import re
pattern = re.compile(r" 'age': \d+,")
with open('test.txt') as f:
for line in f:
line = pattern.sub(r'', line)
print(line, end='')
印刷:
{'name': 'Bryan', 'male': True, 'hometown': 'Boston'}
{'name': 'Anna', 'male': False, 'hometown': 'Chicago'}
{'name': 'Jeff', 'male': True, 'hometown': 'Vancouver'}
{'name': 'Maria', 'male': False, 'hometown': 'Madrid'}
概括
搜索您的正则表达式并将其替换为空字符串。剩下的就相当于匹配了正则表达式的所有内容。