Regex在所有大写字之前插入字符

2024-09-29 21:48:55 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试创建正则表达式以实现此字符串转换:

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个或更多大写字母的表达式正在花费多次。我怎样才能解决这个问题? 谢谢


Tags: 方法字符串rejsonhttpgetserviceall
1条回答
网友
1楼 · 发布于 2024-09-29 21:48:55

你可以用这个

(?!^)(?<=[^A-Z_])([A-Z]+)
  • (?!^)-负前瞻不应与字符串的开头匹配
  • (?<=[^A-Z_])-正向查找匹配前面应该有除大写字母或
  • ([A-Z]+)-一次或多次匹配大写字母

取而代之

_\1

^{}

相关问题 更多 >

    热门问题