![](/img/trans.png)
[英]Pythonic Way to Add Space Before Capital Letter If and Only If Previous Letter is Not Also Capital
[英]How do I insert space before capital letter if and only if previous letter is not capital?
我有文字:
'SMThingAnotherThingBIGCapitalLetters'
我希望输出为:
'SM Thing Another Thing BIG Capital Letters'
我的正则表达式现在:
r"(\w)([A-Z])", r"\1 \2"
当我彼此之间没有2个大写字母时,此方法有效。
我的正则表达式的输出:
'S MThing Another Thing B I G Capital Letters'
因此,当下一个字母较小时,我需要使用正则表达式在大写字母之前插入一个空格。
有人有主意吗?
您应该谨慎使用正则表达式。 它们可以轻松地转变为没人能理解的巨大怪物。 您可以使用简单的循环而不是regexp来解决问题:
a = 'SMThingAnotherThingBIGCapitalLetters'
result = a[0]
for i, letter in enumerate(a):
if letter.isupper() and (result[-1].islower() or a[i+1].islower()):
result += ' '
if i: result += letter
result
'SM Thing Another Thing BIG Capital Letters'
您可以对2个捕获组使用交替,并用r"\\1\\2 "
这样的group1 group2 space
替换
([A-Z])(?=[A-Z][a-z])|([a-z])(?=[A-Z])
说明
([AZ])
捕获第1组的首字母AZ (?=[AZ][az])
正向向前看,断言右边的是大写字母和小写字母az |
要么 ([az])
捕获组2中的小写字母az (?=[AZ])
正向向前看,断言右边是大写AZ
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.