Python3 re.split()通过不在特殊子字符串中的字符

时间:2013-04-05 10:21:28

标签: python-3.x tokenize

我正在尝试解析和验证语言。我想标记输入以检查语法。 我的输入字符串是:

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"']

或者如何有效地修复这种“如此紧密的分裂”? 或者也许是我想念的不同......

1 个答案:

答案 0 :(得分:0)

想想用

分开
re.split(r"\s*(NOT|AND|OR|\(|\)|CONTAINS|<|>|=)\s*", input)

解决了我的问题