2016-04-03 31 views
0

从这样的字符串: “劳顿的笑眼睛照片,好吧”,我想提取 “笑眼睛照片”。我写了下面的代码。用于介词的Python正则表达式匹配 - 字边界问题

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

它适用于上述情况。但对于下面的示例,它失败。 '山星沙龙服务'。这里没有介词,但是尽管给出了单词边界/ b,它仍然在“山”一词中出现“in”。 我该如何做这项工作?

回答

3

您的加入字符串的结果类似于(\bat|in\b)。这意味着要么\bat要么in\b ---也就是说,字边界只适用于第一个替代的开始和最后一个,而不是每个。

尝试r"\b({})\b"代替。

+0

Thanks @ BrenBarn – user4654