我正在尝试检查一个大写字母,后面有一个小写字母。诀窍是会有一堆垃圾大写字母和数字直接出现在它之前。例如:
AASKH317298DIUANFProgramming is fun
正如您所看到的,在我们需要的短语Programming is fun
之前,我们不需要直接提供一些内容。
我正在尝试使用正则表达式通过获取每个字符串然后用''
替换它来完成此操作,因为不必保留原始字符串。
re.sub(r'^[A-Z0-9]*', '', string)
此代码的问题在于它为rogramming is fun
留下了P
,因为P
是大写字母。
我如何检查以确保如果下一个字母是小写字母,那么我应该保持该资本不受影响。 (Programming
中的{{1}})
答案 0 :(得分:11)
使用否定前瞻:
re.sub(r'^[A-Z0-9]*(?![a-z])', '', string)
这匹配不是后跟小写字符的任何大写字符或数字。
演示:
>>> import re
>>> string = 'AASKH317298DIUANFProgramming is fun'
>>> re.sub(r'^[A-Z0-9]*(?![a-z])', '', string)
'Programming is fun'
答案 1 :(得分:3)
你也可以使用这样的匹配:
>>> import re
>>> s = 'AASKH317298DIUANFProgramming is fun'
>>> r = r'^.*([A-Z][a-z].*)$'
>>> m = re.match(r, s)
>>> if m:
... print(m.group(1))
...
Programming is fun