Python 正则表达式:在包含 OR 和 AND 的查询字符串中查找所有单词/短语

2 投票
2 回答
704 浏览
提问于 2025-04-16 14:23

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

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

撰写回答