为什么这个正则表达式: r'^(?P<first_init>\b\w\.\b)\s(?P<mid_init>\b\w\.\b)\s(?P<last_name>\b\w+\b)$' 不匹配 J. F. Kennedy ?
我必须删除 \b在组中first_init和 mid_init来匹配单词。 我正在使用 Python。为了测试,我正在使用 https://regex101.com/
谢谢
请您参考如下方法:
您过度应用了 \b 分词符。
\b 将仅匹配如果一侧有一个有效的“单词”字符而另一侧没有。现在你使用这个结构两次:
\b\w\.\b\s
.. 没错,它不匹配,因为在左侧你有一个非单词字符(一个句号)而在另一侧你也有一个非-单词字符(一个空格)。
删除句点和 \s 之间的 \b 就足以让它工作了。
