Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式查找分隔符之间的所有单词_Python_Regex - Fatal编程技术网

Python 使用正则表达式查找分隔符之间的所有单词

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:

我已经研究过这个问题,也研究过正则表达式,但我仍然无法理解

我需要找到给定txt文件中两个分隔符之间的所有单词。分隔符是:

** 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)