2024-06-01 04:36:08 发布
网友
我想找一个短语,在它后面匹配几个单词,但是如果我找到另一个特定的短语,就早点停下来。在
例如,我想在“going to the”后面匹配最多三个单词,但是如果遇到“to try”,则停止匹配过程。例如,“去卢娜公园”将产生“卢娜公园”;而“前往秘鲁首都”将产生“首都城市”和“去月球品尝奶酪蛋糕”将产生“月亮”。在
可以用一个简单的正则表达式(最好是Python)来完成吗?我试过所有我能想到的组合,但失败得惨不忍睹:)。在
这一个匹配最多3个({1,3})个单词,只要它们后面没有紧跟着to try((?!to try)):
{1,3}
(?!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()
输出
我想你是在寻找从句子中提取专有名词的方法。您应该查看NLTK以获得正确的方法。Regex只能对有限的上下文无关语法有用。另一方面,你似乎在要求分析人类语言的能力,这对计算机来说是非常重要的。在
这一个匹配最多3个(
{1,3}
)个单词,只要它们后面没有紧跟着to try((?!to try)
):输出
^{pr2}$我想你是在寻找从句子中提取专有名词的方法。您应该查看NLTK以获得正确的方法。Regex只能对有限的上下文无关语法有用。另一方面,你似乎在要求分析人类语言的能力,这对计算机来说是非常重要的。在
相关问题 更多 >
编程相关推荐