gpt4 book ai didi

python - 带有可变数据的 RegEx - ply.lex

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:19 27 4
gpt4 key购买 nike

我正在使用 python 模块 ply.lex 编写词法分析器。我得到了一些用正则表达式指定的标记,但现在我卡住了。我有一个关键字列表,它应该是一个 token data 是一个包含大约 1000 个关键字的列表,这些关键字都应该被识别为一种关键字。例如:_Function1 _UDFType2 等等。列表中的所有单词都由空格分隔。我只是想让词法分析器识别这个列表中的单词,这样它就会返回一个类型为“KEYWORD”的标记。

data = 'Keyword1 Keyword2 Keyword3 Keyword4'
def t_KEYWORD(t):
# ... r'\$' + data ??
return t

text = '''
Some test data


even more

$var = 2231




$[]Test this 2.31 + / &
'''

autoit = lex.lex()
autoit.input(text)
while True:
tok = autoit.token()
if not tok: break
print(tok)

所以我试图将变量添加到该正则表达式,但没有成功。我总是得到: 没有为规则“t_KEYWORD”定义正则表达式

提前致谢!约翰

最佳答案

正如@DSM 建议您可以使用 TOKEN decorator .查找 catdog 等标记的正则表达式是 'cat|dog'(即,由 '|' 分隔的单词 而不是空格)。所以尝试:

from ply.lex import TOKEN
data = data.split() #make data a list of keywords

@TOKEN('|'.join(data))
def t_KEYWORD(t):
return t

关于python - 带有可变数据的 RegEx - ply.lex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12217816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com