通过在python中搜索2个或更多RE来识别字符串

时间:2014-04-14 15:50:36

标签: python regex

有没有办法可以在Python中使用正则表达式在字符串中搜索2个或更多单词。

例如,如果我有这样的字符串列表:

[red_house, red_door, red_seat, green_door, green_house, green_table]

...我想特别返回red_house,我可以这样做:

red_house = [obj for obj in list if re.search("red", obj) and re.search("house", obj)] 

但是可以将这两个re.search组合成1吗?

干杯,

3 个答案:

答案 0 :(得分:1)

re.search("red.*house",my_String)

如果你知道它将以这种方式订购......

如果你知道它会有单词,但它可能是" house_red"或者代替" red_house",这可能有效

 if set(re.findall("[a-zA-z]+",my_string)).intersection(["red","house"]) == set(["house","red"]) :
     #do something

因为集合是无序的,所以你只是寻找与所有单词的交集

答案 1 :(得分:1)

我会这样做(如果只有两个单词必须匹配):

l = "red_house red_door red_seat green_door green_house green_table house-red".split()
filter(lambda s: re.search('(red.*house)|(house.*red)', s), l)
  

Out [7]:['red_house']

答案 2 :(得分:0)

您可以使用预测来获得更通用的AND运算符(Regular Expressions: Is there an AND operator?)。

但是使用两个单独的搜索和python and来组合它们更清晰,更简单。