在正则表达式中用双引号引起来的搜索字
def key_found(key, sentence): # Checks for key in sentence.
search_string = r'\b' + key + r'\b'
match_found = re.search(search_string, sentence, re.IGNORECASE)
if match_found is None:
return False
else:
return True
key = '20"x30"'
sentence = '1 Unit Lace Borders Tissue Paper 20"x30" Half Ream Recycled Unit pack 120'
if key_found(key, sentence):
print("True")
它不是在句子中搜索关键字
答案 0 :(得分:1)
在def key_found(key, sentence)
中执行以下操作:
def key_found(key, sentence): # Checks for key in sentence.
match_found = re.search(key, sentence, re.IGNORECASE)
if match_found is None:
return False
else:
return True
此外,如果您不想忽略大小写:
if key in sentence:
print("True")
正如您在评论中提到的,您需要完全匹配,为此使用re.match,代码:
def key_found(key, sentence):
for word in sentence.split():
match_found = re.match(key, word, re.IGNORECASE)
if match_found is not None:
return True
答案 1 :(得分:1)
我不确定您是否需要这种复杂的方法,但是当前代码的直接问题(和解决方法)是您正在使用的regex模式本身。应该是这样:
search_string = r'(?<!\S)' + key + r'(?!\S)'
正则表达式模式\b20"x30"\b
无法与输入匹配的原因是,"
(一个非单词字符)与后面的空格(另一个非单词字符)之间的边界是不是单词边界。相反,请使用(?!\S)
来检测后面是空格字符还是字符串的结尾(对于(?<!\S)
则相反)。
在进行了此更改之后,保持其余代码不变,我得到了以下输出:
True