我有一个这样的查询字符串:
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']
我已经尝试过乱用正则表达式,但找不到办法来做到这一点。
感谢您的帮助。
答案 0 :(得分: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
答案 1 :(得分:1)
IMO你应该改为使用
s.split(' AND ')
s.split(' OR ')
或如果间距不规则,请使用
s.split('AND')
s.split('OR')
然后循环并.strip()
每个元素