PyMatch字符串后跟子字符串

2024-05-15 00:09:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用PyParsing来解析一些自动生成的sqlserver脚本。我无法让解析器在GO关键字处停止解析。你知道吗

from pyparsing import *

test = '''
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
'''

working = Literal("SET") + Word(printables) * 2
not_working = Literal("SET") + OneOrMore(Word(printables) + ~Literal("GO"))

print('Working')
for result, start, end in working.scanString(test):
    print( "Found {0} at [{1}:{2}]".format(result, start, end))

print('\nNot working')
for result, start, end in not_working.scanString(test):
    print( "Found {0} at [{1}:{2}]".format(result, start, end))

输出如下:

"Working"
Found ['SET', 'ANSI_NULLS', 'ON'] at [1:18]
Found ['SET', 'QUOTED_IDENTIFIER', 'ON'] at [22:46]

"Not working -- missing the ON keyword"
Found ['SET', 'ANSI_NULLS'] at [1:15]
Found ['SET', 'QUOTED_IDENTIFIER'] at [22:43]

出于某种原因,我的“notworking”示例没有获得ON关键字。当解析器看到GO关键字时,如何告诉它停止?你知道吗


Tags: testgoon关键字resultstartatworking

热门问题