介词-词边界问题的Python正则表达式匹配

介词-词边界问题的Python正则表达式匹配,python,regex,Python,Regex,从如下字符串: “劳顿的笑眼照片,好的”,我想摘录 “笑眼睛照片”。我编写了以下代码 PREPOSITIONS = ["at","in"] matches = re.search(r"^([\w&,.\'\s]+)" + r"(\b{}\b)". format('|'.join(PREPOSITIONS)), title, re.I) if matches: return matches.group(1).strip().title

从如下字符串: “劳顿的笑眼照片,好的”,我想摘录 “笑眼睛照片”。我编写了以下代码

PREPOSITIONS = ["at","in"]
matches = re.search(r"^([\w&,.\'\s]+)" + r"(\b{}\b)".
                      format('|'.join(PREPOSITIONS)), title, re.I)
  if matches:
    return matches.group(1).strip().title()
它在上述情况下运行良好。但对于下面的示例,它失败了。 “山之星沙龙服务”。这里没有介词“in”,但它仍然抓住了单词“Mountain”中的“in”,尽管给出了单词边界/b。
我怎样才能做到这一点呢?

您的字符串连接结果类似于
(\bat|in\b)
。这意味着
\bat
或\b中的
——也就是说,单词边界仅应用于第一个备选词的开头和最后一个备选词的结尾,而不是每个备选词的结尾


请尝试
r“\b({})\b”

您的字符串连接结果类似于
(\bat|in\b)
。这意味着
\bat
或\b
中的
——也就是说,单词边界仅应用于第一个备选词的开头和最后一个备选词的结尾,而不是每个备选词的结尾

请改为尝试
r“\b({})\b”