Nelson, Craig T. 形式的名称需要拆分为
AN Nelson
FN Craig
IT C.T.
IT 表示缩写,注意第一个缩写是 FN(名字)的第一个字母。
我已经在正则表达式中拥有了一堆模式。对于这个,我怀疑正则表达式不起作用,原因是:你不能分割反向引用
import re
name = r'Nelson, Craig T.'
pat = r'([^\W\d_]+),\s([^\W\d_]+\s?)\s(([A-Z]\.?)+)\s?$'
rep = r'AN \1\nVN \2\nsf \3\n'
split = re.sub(pat, rep, name)
print(split)
将产生:
AN Nelson
FN Craig
IT T.
理想情况下,我会以某种方式对\2 进行切片,添加句号并将\3 粘贴在其后面。我认为这对于正则表达式是不可能的,我应该使用字符串操作,但是,这不是我第一次在这里学习一个我没有从documentation中推导出来的技巧。 。 (谢谢大家。)
最佳答案
您可以为第一个首字母再使用一个组,如下所示:
pat = r'([^\W\d_]+),\s(([^\W\d_])[^\W\d_]*\s?)\s(([A-Z]\.?)+)\s?$'
rep = r'AN \1\nVN \2\nIT \3.\4\n'
我还更正了 rep
变量中缩写的使用 sf
而不是 IT
。
关于python - 切片正则表达式反向引用?诺坎多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16093187/