正则表达式:最多匹配一个单词或最多个单词

2024-05-20 08:20:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找一个短语,在它后面匹配几个单词,但是如果我找到另一个特定的短语,就早点停下来。在

例如,我想在“going to the”后面匹配最多三个单词,但是如果遇到“to try”,则停止匹配过程。例如,“去卢娜公园”将产生“卢娜公园”;而“前往秘鲁首都”将产生“首都城市”和“去月球品尝奶酪蛋糕”将产生“月亮”。在

可以用一个简单的正则表达式(最好是Python)来完成吗?我试过所有我能想到的组合,但失败得惨不忍睹:)。在


Tags: theto过程单词蛋糕trygoing月球
2条回答

这一个匹配最多3个({1,3})个单词,只要它们后面没有紧跟着to try((?!to try)):

import re
infile = open("input", "r")
for line in infile:
    m = re.match("going to the ((?:\w+\s*(?!to try)){1,3})", line)
    if m:
        print m.group(1).rstrip()

输出

^{pr2}$

我想你是在寻找从句子中提取专有名词的方法。您应该查看NLTK以获得正确的方法。Regex只能对有限的上下文无关语法有用。另一方面,你似乎在要求分析人类语言的能力,这对计算机来说是非常重要的。在

相关问题 更多 >