嘿,我用 pyparsing 编写了一个非常简单的解析器,它检测文本中的一些标记,然后用不同的字符串替换它们。问题是现在我的代码只适用于完全匹配。我想做的是检测部分匹配。例如,如果标记是“foobar”,我想匹配一个像“foobarfoo”这样的词。有没有办法用pyparsing做到这一点?我查看了示例并进行了一些研究,但我什么也没想到。

谢谢

编辑:

我有一个要匹配的标记列表和文本中的单词列表。所以我想要一个考虑到这一事实的解决方案。 token 列表可能非常大。

最佳答案

Literal('foobar')+Word(pyp.alphas) 定义了一个 pyparsing ParseExpression,它要求文本以 '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

关于python - pyparsing中是否有 "startswith"方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7586722/

10-12 23:03