pyparsing中有“startswith”方法吗

3 投票
2 回答
920 浏览
提问于 2025-04-17 03:17

嘿,我用pyparsing写了一个非常简单的解析器,它可以在文本中找到一些特定的词,然后把它们替换成其他字符串。现在的问题是,我的代码目前只能找到完全匹配的词。我想要的功能是能够找到部分匹配的词。比如说,如果我想匹配的词是“foobar”,那么像“foobarfoo”这样的词也应该能匹配上。请问用pyparsing可以做到这一点吗?我查了一些例子和资料,但没有找到解决办法。

谢谢!

补充说明:

我有一个要匹配的词列表和文本中的单词列表。所以我希望有一个解决方案能够考虑到这一点。我的词列表可能会很大。

2 个回答

3

最简单的方法就是在你的语法中使用pyparsing的正则表达式:

startsWithFoobar = Regex(r"foobar[a-zA-Z0-9_]+")
3

Literal('foobar')+Word(pyp.alphas) 定义了一个 pyparsing 的解析表达式,这个表达式要求文本必须以 'foobar' 开头,后面跟着任意一个字母。例如:

import pyparsing as pyp
ident = pyp.Combine(pyp.Literal('foobar')+pyp.Word(pyp.alphas))('foo')
for match in ident.searchString('bar foobarfoo bar foobarbafoo'):
    print(match.foo)

会得到

foobarfoo
foobarbafoo

撰写回答