Python Regex - 检查大写字母后面的大写字母

时间:2014-02-16 00:07:43

标签: python regex string

我正在尝试检查一个大写字母,后面有一个小写字母。诀窍是会有一堆垃圾大写字母和数字直接出现在它之前。例如:

AASKH317298DIUANFProgramming is fun

正如您所看到的,在我们需要的短语Programming is fun之前,我们不需要直接提供一些内容。

我正在尝试使用正则表达式通过获取每个字符串然后用''替换它来完成此操作,因为不必保留原始字符串。

re.sub(r'^[A-Z0-9]*', '', string)

此代码的问题在于它为rogramming is fun留下了P,因为P是大写字母。

我如何检查以确保如果下一个字母是小写字母,那么我应该保持该资本不受影响。 (Programming中的{{1}})

2 个答案:

答案 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
相关问题