使用 Regex 查找所有出现的特定字符串并将其与随后出现的另一个字符串配对
Use Regex to find all occurrences of a specific string and pair it with subsequent occurrences of another string
现在我有一个正在读入的 test.txt 文件。它有几个换行符,所以我正在使用 re.DOTALL。如何将后续模式组合成对?
test.txt:
blah blah blah||| blah blah||
Key_one1_end || blah blah
blah blah || blah
blah blah |||||| blah blah Value_number : 10
blah blah blah||| blah blah||
Key_two2_end || blah blah
blah blah || blah
Value_number : f
这是我的代码
f = open(r'path/to/file/test.txt')
list= re.findall('(Key_\w*_end)|(Value_number...\w*)', f.read(), re.DOTALL)
print (list)
output: [('Key_one1_end', ''), ('', 'Value_number : 10'), ('Key_two2_end', ''), ('', 'Value_number : f')]
我希望输出看起来像这样
[('Key_one1_end','Value_number : 10'), ('Key_two2_end', 'Value_number : f')]
有什么建议吗?
pattern1|pattern2
匹配任一模式,因此列表中的每个匹配项将仅包含其中一个匹配项。
如果您想将它们组合成一个匹配项,请不要使用替代项。使用通配符来匹配两个模式之间的文本。
list= re.findall('(Key_\w*_end).*?(Value_number...\w*)', f.read(), re.DOTALL)
现在我有一个正在读入的 test.txt 文件。它有几个换行符,所以我正在使用 re.DOTALL。如何将后续模式组合成对?
test.txt:
blah blah blah||| blah blah||
Key_one1_end || blah blah
blah blah || blah
blah blah |||||| blah blah Value_number : 10
blah blah blah||| blah blah||
Key_two2_end || blah blah
blah blah || blah
Value_number : f
这是我的代码
f = open(r'path/to/file/test.txt')
list= re.findall('(Key_\w*_end)|(Value_number...\w*)', f.read(), re.DOTALL)
print (list)
output: [('Key_one1_end', ''), ('', 'Value_number : 10'), ('Key_two2_end', ''), ('', 'Value_number : f')]
我希望输出看起来像这样
[('Key_one1_end','Value_number : 10'), ('Key_two2_end', 'Value_number : f')]
有什么建议吗?
pattern1|pattern2
匹配任一模式,因此列表中的每个匹配项将仅包含其中一个匹配项。
如果您想将它们组合成一个匹配项,请不要使用替代项。使用通配符来匹配两个模式之间的文本。
list= re.findall('(Key_\w*_end).*?(Value_number...\w*)', f.read(), re.DOTALL)