Python Regex:查找包含OR和AND的查询字符串中的所有单词/短语

时间:2011-03-25 03:50:01

标签: python regex

我有一个这样的查询字符串:

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 个答案:

答案 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()每个元素