pyparsing中有“startswith”方法吗
嘿,我用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