字符串中带双引号的正则表达式搜索词

2024-09-28 23:20:36 发布

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

正则表达式中双引号的搜索词

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")

它不是句子中的搜索键


Tags: keyretruesearchstringreturnifdef
2条回答

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")

正如您在评论中提到的,您希望完全匹配,请使用重新匹配为此,代码:

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

我不确定您是否需要这样复杂的方法来实现这一点,但是当前代码的直接问题(和修复)是您正在使用的regex模式本身。应该是这样的:

search_string = r'(?<!\S)' + key + r'(?!\S)'

regex模式\b20"x30"\b与输入不匹配的原因是"(一个非单词字符)和后面的空格(另一个非单词字符)之间的边界不是单词边界。相反,使用(?!\S)来检测后面的内容是空白字符还是字符串的结尾(反之亦然)。你知道吗

在做了这些更改之后,保持代码的其余部分不变,我得到以下输出:

True

相关问题 更多 >