Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的正则表达式,用于在名称中的单个字母后添加点_Python_Regex - Fatal编程技术网

python中的正则表达式,用于在名称中的单个字母后添加点

python中的正则表达式,用于在名称中的单个字母后添加点,python,regex,Python,Regex,如何使用python中的正则表达式在名称中的单个字母后添加点和空格,但前提是它在开头作为单个字母,例如: A G Mark AG Mark A.G. Mark 对此 A. G. Mark 我尝试过这个方法,但在某些情况下不起作用: import re line = "A G Mark" b = re.sub(r' ', r'. ', line) print (b) a = re.sub(r'(?<=[.])(?=[^\s])', r' ', line) print

如何使用python中的正则表达式在名称中的单个字母后添加点和空格,但前提是它在开头作为单个字母,例如:

A G Mark
AG Mark
A.G. Mark
对此

A. G. Mark
我尝试过这个方法,但在某些情况下不起作用:

import re

line = "A G Mark"
b = re.sub(r' ', r'. ', line)
print (b)
a = re.sub(r'(?<=[.])(?=[^\s])', r' ', line)
print (a)
重新导入
line=“A G标记”
b=re.sub(r'',r'',第行)
印刷品(b)

a=re.sub(r’(?在所有情况下,您都可以尝试:

(?<=[A-Z])\.?\s?(?![a-z])

(?所以全名的区别是“大写字母后跟小写字母”

因此,我们希望替换大写字母,后跟一个可能的点,而不是小写字母,后跟任意数量的空格

这转化为以下替换:

re.sub(r'([A-Z])\.?(?![a-z])\s*', r'\g<1>. ', line)
其中:

A.G.标记
A.G.马克
A.G.马克

尝试复制并粘贴到(查找并替换)框中

查找:
(\w)(\s\w)(\s\w+)


替换:
$1.$2.$3

上面的代码似乎有效。你能更清楚地说明这个问题吗?例如,如果我把A和b放在一起,它保持不变:A.G.标记A G,A和b在每种情况下都有效,但不适用于所有情况。但是你说“但仅当它在开头作为一个字母时”。你是否希望
AG-Mark
A.G.Mark
也成为
A.G.Mark
?AG-Mark是一个非常罕见的案例,我只是想看看它是否可能,如果不仅仅是G-Mark或A.G.Mark。谢谢JvdV。谢谢你,Tomerikoo,它也有效,但JvdV是第一个。@Tomerikoo谢谢你告诉我,我是新的,但两者都很有帮助,感谢您抽出时间,我相信这对整个社区都有帮助。