Python 正则表达式:在包含 OR 和 AND 的查询字符串中查找所有单词/短语
我有一个查询字符串,像这样:
s = 'word1 AND word2 word3 OR "word4 word5" OR word6 AND word7 word8'
我需要找到所有在“OR”和“AND”之间的单词或短语,所以我想要的结果是这样的列表(最好是“AND”或“OR”和单词/短语之间没有空格):
l = ['word1', 'word2 word3', '"word4 word5"', 'word6', 'word7 word8']
我试着用正则表达式来搞定这个,但一直找不到办法。
谢谢大家的帮助。
2 个回答
1
在我看来,你应该使用
s.split(' AND ')
s.split(' OR ')
如果空格不规则的话,可以使用
s.split('AND')
s.split('OR')
然后对每个元素进行循环,并用 .strip()
去掉多余的空格
6
如果你想使用正则表达式,可以用 re.split 来实现:
re.split(' OR | AND ', 'word1 AND word2 word3 OR "word4 word5" OR word6 AND word7 word8')
['word1', 'word2 word3', '"word4 word5"', 'word6', 'word7 word8']
如果你需要更强大的工具,可以看看 pyparsing 这个库:
http://pyparsing.wikispaces.com/file/view/searchparser.py