python - 切片正则表达式反向引用?诺坎多?

标签 python regex slice backreference

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/

相关文章:

regex - 如何使用 Golang 正则表达式查找完全匹配的单词?

arrays - 使用 struct 在 Go 中处理空 JSON 数组

vector - Itertools 和带有切片索引的函数之间的 Rust 向量类型转换/接口(interface)问题

python - 评估列中唯一值的 True 百分比

Python 获取 Linux 上的空闲持续时间

regex - A123ABC 的正则表达式

java - 正则表达式检查IP

go - 就地删除 Golang slice 元素

Python 链表查询

python - 为什么我可以访问 Python 函数外部有条件定义的变量?