我正在尝试解析和验证语言。我想标记输入以检查语法。 我的输入字符串是:
something > 0 AND (something CONTAINS "substr" OR NOT something)
如果我这样做了:
tokens = re.split(r"([\s()])", input)
我得到了这个:
['something', ' ', '>', ' ', '0', ' ', 'AND', ' ', '', '(', 'something', ' ', 'CONTAINS',' ', '"substr"', ' ', 'OR', ' ', 'NOT', ' ', 'something', ')', '']
这是我想要的。但是,总有一些“东西”。如果我用“substr with whitespace”替换“substr”,我得到了这个数组,这不是完美的结果:
['"substr', ' ', 'with', ' ', 'whitespace"']
有什么方法可以拆分成以下内容吗?
['"substr with whitespace"']
或者如何有效地修复这种“如此紧密的分裂”? 或者也许是我想念的不同......
答案 0 :(得分:0)
想想用
分开re.split(r"\s*(NOT|AND|OR|\(|\)|CONTAINS|<|>|=)\s*", input)
解决了我的问题