[英]Python regular expression sub
我正在使用此子:
def camelize(key):
print re.sub(r"[a-z0-9]_[a-z0-9]", underscoreToCamel, key)
哪个调用此功能
def underscoreToCamel(match):
return match.group()[0] + match.group()[2].upper()
当我致电camelize('sales_proj_3_months_ago')
它将返回'salesProj3_monthsAgo'而不是'salesProj3MonthsAgo'。 但是,如果我调用`camelize('sales_proj_30_days_ago'),它会按预期返回'salesProj30DaysAgo'。
因此,当下划线之间只有一个字符时,我的正则表达式替换会出现问题。 如何写我的正则表达式替代来解决这些情况?
您可以使用后向搜索,以便每个匹配项都不会与前一个匹配项重叠。
def camelize(key):
return re.sub('(?<=[a-z0-9])_[a-z0-9]', lambda m: m.group()[1].upper(), key)
您的代码匹配如下:
s_p
j_3
s_a
如您所见, _3_
不匹配,因为先前已匹配。 因此,您实际上可以匹配一个字符:
def camelize(key):
print re.sub(r"_[a-z0-9]", underscoreToCamel, key)
def underscoreToCamel(match):
return match.group()[1].upper()
样本输出:
>>> camelize("sales_proj_3_months_ago")
salesProj3MonthsAgo
>>> camelize('sales_proj_30_days_ago')
salesProj30DaysAgo
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.