Python 使用正则表达式查找分隔符之间的所有单词
我已经研究过这个问题,也研究过正则表达式,但我仍然无法理解 我需要找到给定txt文件中两个分隔符之间的所有单词。分隔符是:Python 使用正则表达式查找分隔符之间的所有单词,python,regex,Python,Regex,我已经研究过这个问题,也研究过正则表达式,但我仍然无法理解 我需要找到给定txt文件中两个分隔符之间的所有单词。分隔符是: ** START ** ** END ** 它看起来很基本,但我一直没能得到它。这就是我到目前为止所做的 def extract_words(file): infile = open(file, 'r', encoding="utf-8").readlines() fileString = "" for line in infile:
** START **
** END **
它看起来很基本,但我一直没能得到它。这就是我到目前为止所做的
def extract_words(file):
infile = open(file, 'r', encoding="utf-8").readlines()
fileString = ""
for line in infile:
fileString += line
for matchedtext in re.findall(r'(?<=\D{2}\sSTART\s\D{2}).*?(?=\D{2}\sEND\s\D{2)', fileString):
print(matchedtext)
有人能解释一下我在这方面出了什么问题以及如何解决吗 您的正则表达式格式不正确。上一个
\D{3}
中缺少一个}
:
r'(?<=\D{3}\sSTART\s\D{3}).*?(?=\D{3}\sEND\s\D{3})'
^ missing
r'(?您在向前看时缺少右大括号}
,*?
此处当前匹配任何字符(换行符除外),您需要使用s
(DOTALL)修饰符强制点匹配任何字符,包括换行符
(?=\D{2}\sEND\s\D{2 )
^ missing right curly brace
您可以在这里使用以下命令
re.findall(r'(?s)(?<=\D{2}\sSTART\s\D{2}).*?(?=\D{2}\sEND\s\D{2})', fileString)
re.findall(r'(?s)(?请给出输入示例和所述输入中的预期匹配模式。非常感谢这项工作。因此,由于没有DOTALL修饰符,它遗漏了所有其他行?
re.findall(r'(?s)(?<=\D{2}\sSTART\s\D{2}).*?(?=\D{2}\sEND\s\D{2})', fileString)