我试图将re.search更改为re.match,以此类推。但是无论我输入什么,它仍然会显示“ No match result”。 我认为代码中可能存在问题,因为我在编写代码时没有完全理解其背后的概念。 基本上,如果给定一个单词并且匹配名称中的单词之一,我将尝试做一个“搜索引擎”来查找所有匹配的名称。有人可以告诉我怎么了吗?
import re
searchlist=[ *insert name here* ]
word_s = input("Search : ")
search_list = re.compile(r'\b(?:%s)\b' % '|'.join(searchlist), re.I|re.M)
result = re.search(search_list, word_s)
if result:
print("Match Result: ", result.group())
else:
print("No match result.")
答案 0 :(得分:0)
您最近的评论显示了问题:
在您的代码中,searchlist
是搜索项(正则表达式要搜索的内容)的列表,不是要搜索的字符串的列表。
例如:
searchlist = ["Fundamentals", "Engineering"]
search_list = re.compile(r'\b(?:%s)\b' % '|'.join(searchlist), re.I|re.M)
现在search_list
是\b(?:Fundamentals|Engineering)\b
,因此它可以用作正则表达式来查找是否其中任何一项出现在word_s
result = re.search(search_list, word_s)
您想做相反的事情:
books = ["Fundamentals of Organic Chemistry, International Edition", "Engineering Mechanics: Statics In SI Units"]
word_s = input("Search for: ")
word_re = re.compile(r"\b{}\b".format(word_s), re.I)
for book in books:
if re.search(word_re, book):
print("First Match Result: ", book)
break # Abort search after first match
else: # Only executed if the for loop was exhausted
print("No match result.")