如何扩展Python正则捕获组以支持带变音符号的西班牙语姓名
正则捕获含西班牙语变音符号的姓名解决方案
需求说明
在不改动原有正则核心逻辑的前提下,扩展姓名捕获规则,使其能够识别包含á、é、í、ó、ú、ü、ñ这些西班牙语变音符号的姓名,同时保留原有“大写开头+后续小写字符”的姓名匹配行为。
修改后的代码
import re input_text = "Había... ; Martín Zázza no se trata de un nombre" #example 1 # input_text = "asasjhsah; Carolina María Sol no se trataría de un nombre" #example 2 # input_text = "Isaías no se trataría de un nombre" #example 3 word = "" # 仅修改此处字符集,添加西班牙语变音符号 name_capture_pattern_01 = r"([A-Z][a-záéíóúüñ]+(?:\s*[A-Z][a-záéíóúüñ]+)*)" regex_pattern_01 = r"(?:^|[.;,]\s*)" + name_capture_pattern_01 + r"\s*(?i:no)\s*(?i:se\s*tratar[íi]a\s*de\s*un\s*nombre|se\s*trata\s*de\s*un\s*nombre|(?:ser[íi]a|es)\s*un\s*nombre)" n1 = re.search(regex_pattern_01, input_text) if n1 and word == "": word, = n1.groups() word = word.strip() print(repr(word)) #print the captured substring
修改说明
仅对name_capture_pattern_01中的小写字符匹配规则做扩展:将原有的[a-z]替换为[a-záéíóúüñ],既保留了“每个姓名片段以大写字母开头、后续为小写字符”的原有逻辑,又新增了对西班牙语常见变音符号的支持,完全适配目标姓名的捕获需求。
预期捕获结果
Martín Zázza Carolina María Sol Isaías
内容的提问来源于stack exchange,提问作者Matt095
相关产品推荐
相关产品推荐

