Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_Python 3.x_Python 3.6_Lookahead - Fatal编程技术网

Python 匹配引用文本之前列表中名称的最后一次出现

Python 匹配引用文本之前列表中名称的最后一次出现,python,regex,python-3.x,python-3.6,lookahead,Python,Regex,Python 3.x,Python 3.6,Lookahead,我正试图在一篇长文本中找到引语和它们各自的作者 示例:Paul[…]简说G_引用了文本 如何将Jane和她的引用文本分为两组,但不包括Paul等 我尝试了一些积极的前瞻,但我得到了所有的名字,不仅仅是简。非常感谢你的帮助 i?(Paul|Jane|Robert|John)(?=[^.]*?G_(.*)_R) 有什么问题: import re QUOTE_FINDER = re.compile(r"(paul|jane|robert|john).*?G_(.*?)_R", re.IGNOREC

我正试图在一篇长文本中找到引语和它们各自的作者

示例:
Paul[…]简说G_引用了文本

如何将Jane和她的引用文本分为两组,但不包括Paul等

我尝试了一些积极的前瞻,但我得到了所有的名字,不仅仅是简。非常感谢你的帮助

i?(Paul|Jane|Robert|John)(?=[^.]*?G_(.*)_R)

有什么问题:

import re

QUOTE_FINDER = re.compile(r"(paul|jane|robert|john).*?G_(.*?)_R", re.IGNORECASE | re.DOTALL)

data = """dfdsf Jane […] Paul […] Jane says G_quoted text_R
and Paul says G_some other text_R while Robert prefers to say G_nothing_R..."""

quotes = QUOTE_FINDER.findall(data)
# [('Jane', 'quoted text'), ('Paul', 'some other text'), ('Robert', 'nothing')]
有什么问题吗

import re

QUOTE_FINDER = re.compile(r"(paul|jane|robert|john).*?G_(.*?)_R", re.IGNORECASE | re.DOTALL)

data = """dfdsf Jane […] Paul […] Jane says G_quoted text_R
and Paul says G_some other text_R while Robert prefers to say G_nothing_R..."""

quotes = QUOTE_FINDER.findall(data)
# [('Jane', 'quoted text'), ('Paul', 'some other text'), ('Robert', 'nothing')]

为什么要向前看?你是否只需要使用“Jane”之前的文本,而不需要更多,或者“Jane”必须是整个正则表达式的匹配项,而不是一个组的匹配项,或者其他一些奇怪的要求?我不太理解。。。如果你只需要“简”,为什么还要加上“保罗”和其他名字?为什么你引用的文本不是用(“)括起来的,而是用“G”和“\u R”?我想从列出的作者那里得到所有的引用。在这个例子中,是简,但在文本的其他部分是保罗、罗伯特等。“G”和“\u R”“最初是html标记,但我转换为text@ivan_pozdeev当前位置我不确定是否理解你的问题。我需要得到所有的引文和作者的名字。作者总是最接近引用的名称。谢谢,很有趣。不能使用Lookbehind,因为Python的引擎,比如PCRE,为什么要使用Lookbehind?你是否只需要使用“Jane”之前的文本,而不需要更多,或者“Jane”必须是整个正则表达式的匹配项,而不是一个组的匹配项,或者其他一些奇怪的要求?我不太理解。。。如果你只需要“简”,为什么还要加上“保罗”和其他名字?为什么你引用的文本不是用(“)括起来的,而是用“G”和“\u R”?我想从列出的作者那里得到所有的引用。在这个例子中,是简,但在文本的其他部分是保罗、罗伯特等。“G”和“\u R”“最初是html标记,但我转换为text@ivan_pozdeev当前位置我不确定是否理解你的问题。我需要得到所有的引文和作者的名字。作者总是最接近引用的名称。谢谢,很有趣。Lookbehind无法使用,因为Python的引擎,如PCRE。非常感谢@zwer!这正是我想要的。非常感谢@zwer!这正是我想要的。