【发布时间】:2019-06-06 14:28:27
【问题描述】:
我有文字:
'SMThingAnotherThingBIGCapitalLetters'
我希望输出是:
'SM Thing Another Thing BIG Capital Letters'
我现在的正则表达式:
r"(\w)([A-Z])", r"\1 \2"
当我没有两个大写字母彼此靠近时,此方法有效。
我的正则表达式的输出:
'S MThing Another Thing B I G Capital Letters'
所以,当下一个字母很小时,我需要正则表达式在大写字母之前插入一个空格。
有人有想法吗?
【问题讨论】:
-
r"([^A-Z])([A-Z])", r"\1 \2"?或者,r"([^\WA-Z])([A-Z])", r"\1 \2"? -
必须使用正则表达式吗?一个简单的文本循环可能更容易理解和维护。
-
\B(?=[A-Z][a-z])|(?<=[a-z])\B(?=[A-Z])怎么样,用空格代替。 -
考虑到当下一个字母很小时,我需要正则表达式在大写字母前插入一个空格您的实际目标,
SMThingAnotherThingBIGCapitalLetters将是:SM Thing Another ThingBIG Capital Letters。这是你的目标吗? -
Thing之前为什么要加空格? IS 前面的字母大写(即M)