我有文本:
'SMThingAnotherThingBIGCapitalLetters'
我希望输出是:
'SM Thing Another Thing BIG Capital Letters'
我的正则表达式现在:
r"(\w)([A-Z])", r"\1 \2"
当我没有两个大写字母在一起时,这个方法就起作用了。你知道吗
我的正则表达式的输出:
'S MThing Another Thing B I G Capital Letters'
所以,当下一个字母很小时,我需要正则表达式在大写字母前插入一个空格。你知道吗
有人有主意吗?你知道吗
Tags:
您可以对2个捕获组使用交替,并用
group1 group2 space
替换,比如r"\1\2 "
解释
([A-Z])
在第1组捕获资本A-Z(?=[A-Z][a-z])
正面向前看,断言右边是大写字母和小写字母a-z|
或([a-z])
捕获组2中的小写a-z(?=[A-Z])
正面向前看,断言右边是大写的A-ZRegex demo
你应该小心使用正则表达式。它们很容易变成无人能理解的巨大怪物。您可以使用简单循环而不是regexp来解决问题:
相关问题 更多 >
编程相关推荐