我如何将字符串分成嵌套的标记?

问题描述 投票:0回答:1

我有由布尔项和方程式组成的字符串,像这样

x=1 AND (x=2 OR x=3) AND NOT (x=4 AND x=5) AND (x=5) AND y=1

我想将x分成由AND分隔的组,同时将括号作为分组运算符。例如,上面的字符串的结果将是

[['x=1'], ['x=2', 'x=3'], ['x=4'], ['x=5'], ['x=5']]

x=2x=3在同一组中,因为它们由()分组并且没有被AND分隔。最后一个方程式被忽略,因为它不是以x开头。

我找到的最接近的是此post,但我不知道如何根据需要修改它。

python regex pyparsing
1个回答
1
投票

我想你可以做这样的事情:

operators = ["AND NOT", "AND"]
sepChar = ":"

for op in operators:
    yourInputString = yourInputString.replace(op,sepChar)

operationsList = youtInputString.split(sepChar) # ['x=1', '(x=2 OR x=3)', '(x=4 AND x=5)', 'y=1']

# For the second result, let's do another operation list:
operators2 = ["OR"]
output = []

for op in operationsList:
    for operator in operators2:
        op.replace("(","").replace(")","") # remove the parenthesis
        if operator in op:
            op = op.split(operator)
    output.append(op)

# output = [['x=1'], ['x=2', 'x=3'], ['x=4'], ['x=5'], ['y=1']]

在这种情况下,我使用“:”作为分隔符,但是您可以根据需要进行更改。请告诉我是否有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.