-1

我从包含换行符(在本例中为 \N)和我不想保留的其他子字符串的文本文件中获取字符串。在换行符的情况下,我可以使用...

re.search('\\\\N', string)

匹配它们,但我想知道如何匹配字符串的其余部分。正如我所说,我需要用其他子字符串来做。我试着做...

re.search('^\\\\N', string)

但这没有返回匹配项。我猜它实际上试图匹配一个以'\'开头的'N',而后者又以'\'以外的任何字符开头。

如何匹配与我传递的正则表达式不匹配的任何内容?

4

1 回答 1

1

我将假设您希望逐行进行此匹配。描述如何执行此操作的最佳方法是举个例子。假设我有以下文件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'}

概括

搜索您的正则表达式并将其替换为空字符串。剩下的就相当于匹配了正则表达式的所有内容。

于 2020-04-19T11:58:43.697 回答