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

2024-09-30 14:31:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

。。。我想还红楼,我可以:

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

但是有没有可能把这两个搜索合并成一个

干杯


Tags: 方法字符串reobj列表forsearchtable
3条回答

可以使用look aheads获得更通用的AND运算符(Regular Expressions: Is there an AND operator?

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

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

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']

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

如果你知道会这样订购

如果你只知道它会有这样的词,但它可能是“房子红”或什么东西,而不是“红房子”,这可能会工作

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

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

相关问题 更多 >