如何检测python文本中的大小写更改并在更改位置插入下划线?

时间:2015-06-17 19:45:21

标签: python regex

对于像AbcdEfgh这样的关键字我想在单词中间发生大小写更改时插入_。因此:AbcdEfgh转换为abcd_efgh 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你走了,

>>> s = "abcdEfgh"
>>> re.sub(r'\B[A-Z]\B', lambda x: '_' + x.group().lower(), s)
'abcd_efgh'
>>> re.sub(r'\B[A-Z]\B', lambda x: '_' + x.group().lower(), 'AbcdEfgH')
'Abcd_efgH'

\B匹配两个单词字符或两个非单词字符,因为您的输入只包含单词字符,上面的正则表达式\B[A-Z]\B必须匹配中间存在的大写字母。这不会触及开头或结尾处存在的大写字母。

修改

>>> re.sub(r'\B[A-Z]', lambda x: '_' + x.group().lower() , re.sub(r'^[A-Z]', lambda m: m.group().lower(), 'AbcdEfgh'))
'abcd_efgh'