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

时间:2016-04-03 02:36:40

标签: 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()

适用于上述情况。但是对于以下示例,它失败了。 '山星沙龙服务'。这里没有介词“in”,但是尽管给出了一个单词boundary / b,它仍然会在“Mountain”中出现“in”。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

您的字符串加入会产生类似(\bat|in\b)的内容。这意味着\batin\b ---也就是说,单词边界仅应用于第一个备用的开头和最后一个的结尾,而不是每个应用。

请尝试r"\b({})\b"