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!这正是我想要的。