我正在寻找2个正则表达式。第一个正则表达式需要匹配以下类型的表达式:P. Parker或M. Jordan或J. Guti
第二个几乎相同,但姓名和姓氏之间没有空格:P.Parker或M.Jordan或S.Gohan
我遇到了这种解决方案,但表现不如预期:
re.sub("[A-Z].[A-z]+[a-z]", "Speaker",chain)
预先感谢
答案 0 :(得分:1)
我建议
r'\b[A-Z]\.\s?[A-Z][a-z]+\b'
详细信息
\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]*
将匹配任何单词字符,后跟.
,然后将仅检查零或一个空格,然后检查所有单词字符。