无法使用具有re, search功能的数组

  • 本文关键字:search 功能 数组 re python
  • 更新时间 :
  • 英文 :


我正试图解决这个问题,我正在编写的代码,我似乎无法找到关于它的任何答案,这样做最简单的方法是最耗时的。如果有人能帮忙,请做所有的评论都是感激的,我会考虑所有的。

from re import search
x = "forth" #this value can change so don't think its just a set value 
array = ["first", "second", "third", "forth", "fifth"]
if search(array[0][1][2][3][4], x):
print(x)
else:
print("error")

这不起作用,我唯一想到的另一种方法是一个接一个地做一个巨大的if语句,其中包含所有值的elif部分,但在我这样做之前,我宁愿检查是否有更简单的方法。

re.search()在字符串(不是模式数组)中查找特定的模式。

你的array[0][1][2][3][4]符号不代表数组的5个元素,它对应于从5维矩阵中访问一个元素。

要检查array中的任何单词是否存在于x中,您可以将数组转换为单个模式或使用any():

pattern = r"b(" + "|".join(array) + ")b" # single pattern, of whole words 
if re.search(pattern,x): 
print(x)
else:
print("error")

if any(re.search(p,x) for p in array): # if any(p in x for p in array):
print(x)
else:
print("error")

请注意,第二种方法不需要re模块,并且可以在单词中找到子字符串(例如"over")在"stackoverflow")中,可能是也可能不是您想要的。

你的代码当前打印整个字符串,如果它包含任何单词,但如果你的目标是打印找到的单词,你应该使用re.findall():

for word in re.findall(pattern,x):
print(word)

我发现匹配对列表更好…尤其是大列表。

import re
thisCheck = re.compile(r'.+th$', re.IGNORECASE)
array = ["first", "second", "third", "fourth", "fifth"]
for x in list(filter(thisCheck.match, array):
print(x)

输出:

fourth
fifth

相关内容

  • 没有找到相关文章

最新更新