2016-04-03 66 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