python - 没有空格时如何用分号分隔 2 个完整名称(并排除以“Mc”开头的名称
问题描述
我正在寻找创建一个正则表达式来帮助分隔有时没有空格的全名。例如:
import re
s = "Bob JonesAlex Smith"
print(re.sub(r"([A-Z][a-z]+)([A-Z][a-z]+)", r"\1; \2", s))
这会正确打印“Bob Jones; Alex Smith”。
但是,当我有以“Mc”开头的名称(例如“McMahon”)时,它不会按预期工作。例子:
import re
s = "Bob McJonesAlex Smith"
print(re.sub(r"([A-Z][a-z]+)([A-Z][a-z]+)", r"\1; \2", s))
以上将打印“Bob Mc; JonesAlex Smith”。
任何可以帮助排除这种模式的正则表达式想法?
解决方案
如果您查看了所有数据集,并且在某些人的名字的开头看到了 Mc,您可以试试这个,
([A-Z](Mc)?[a-z]+)([A-Z](Mc)?[a-z]+)
“?” 是一个量词,它将检查其前身元素 1 或 0 次
推荐阅读
- c# - 在硒中查找元素
- powershell - 使用powershell替换文本文件中唯一文本行下的非唯一文本行
- asp.net - 如何在 ASP.Net Core 中设置全球化文化?
- sql - SQL:如何只返回 1 个以前的日期作为记录,而不是所有以前的日期
- java - dockerClient.createContainerCMD 不会将 Selenium 节点链接到 Hub
- google-cloud-platform - Cloud Run 中的证书续订
- mongodb - Mongodb pod即使处于空闲状态也会消耗内存
- loopbackjs - 在 Loopback 3 中删除基本模型关系
- python - 硒找不到元素
- sql - 查找与您输入的日期匹配的所有日期的最佳方法是什么?