介词-词边界问题的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”