尝试创建正则表达式以实现此字符串转换:
GetMQ -> Get_MQ
AllJSON -> All_JSON
JSONOBJ -> JSONOBJ
ServiceHTTP_Secure_Shell -> Service_HTTP_Secure_Shell
在python中,我尝试了以下方法:
regex = re.compile(r"(?<!\A)(?=([A-Z]{2,}))") # Not at the beginning, Lookahead ALLCAPS
result = regex.sub('_', given_string)
但是没有成功,我得到了这个:
Get_MQ
All_J_S_ON
J_A_S_O_N_O_BJ
Service_H_T_TP_Secure_Shell
似乎2个或更多大写字母的表达式正在花费多次。我怎样才能解决这个问题? 谢谢
你可以用这个
(?!^)
-负前瞻不应与字符串的开头匹配(?<=[^A-Z_])
-正向查找匹配前面应该有除大写字母或([A-Z]+)
-一次或多次匹配大写字母取而代之
^{}
相关问题 更多 >
编程相关推荐