正则表达式匹配首字母

时间:2020-06-24 12:49:28

标签: python regex

我正在寻找2个正则表达式。第一个正则表达式需要匹配以下类型的表达式:P. Parker或M. Jordan或J. Guti

第二个几乎相同,但姓名和姓氏之间没有空格:P.Parker或M.Jordan或S.Gohan

我遇到了这种解决方案,但表现不如预期:

re.sub("[A-Z].[A-z]+[a-z]", "Speaker",chain)

预先感谢

2 个答案:

答案 0 :(得分:1)

我建议

r'\b[A-Z]\.\s?[A-Z][a-z]+\b'

请参见regex demoregex graph

enter image description here

详细信息

  • \b-单词边界
  • [A-Z]-大写字母
  • \.-一个点
  • \s?-可选的空格
  • [A-Z][a-z]+-大写字母,然后是1+小写字母
  • \b-单词边界

请参见Python demo

import re
s = " P. Parker or M. Jordan or J. Guti P.Parker or M.Jordan or S.Gohan "
print(re.findall(r"\b[A-Z]\.\s?[A-Z][a-z]+\b", s))
# => ['P. Parker', 'M. Jordan', 'J. Guti', 'P.Parker', 'M.Jordan', 'S.Gohan']

答案 1 :(得分:0)

您可以尝试

import re

s = " P. Parker or M. Jordan or J. Guti P.Parker or M.Jordan or S.Gohan "
print(re.findall(r"[A-Z]+\.\s?[a-zA-Z]*", s)) 

输出

['P. Parker', 'M. Jordan', 'J. Guti', 'P.Parker', 'M.Jordan', 'S.Gohan']

正则表达式[A-Z]+\.\s?[a-zA-Z]*将匹配任何单词字符,后跟.,然后将仅检查零或一个空格,然后检查所有单词字符。