python - pyparsing中是否有 "startswith"方法

标签 python parsing pyparsing

嘿,我用 pyparsing 编写了一个非常简单的解析器,它检测文本中的一些标记,然后用不同的字符串替换它们。问题是现在我的代码只适用于精确匹配。我想做的也是检测部分匹配项。例如,如果 token 是“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/

相关文章:

python - 如何修复 "TypeError: int() argument must be a string, a bytes-like object or a number, not ' NoneType'"

python - 创建随机数据库并将其从 numpy 转换为 pandas

ruby - 如何手动构建 AST?

python - pyparsing 匹配指定文字的任意组合

python - 解析 : issues with setResultsName

python - Pandas 时间序列使用相对于开始的时间

python - 捕获 SIGINT 并调用对象中的方法

c# - 从文本文件中读取和解析整数

python - 获取字符串中的值 - Python

python:用 BNF 或 pyparsing 替换正则表达式