[英]Regex to insert a char before all caps word
嘗試創建 Regex 以實現此字符串轉換:
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]+)
(?!^)
- 負前瞻不應該匹配字符串的開頭(?<=[^A-Z_])
- 肯定的lookbehind匹配前面應該有大寫字母或_以外的任何東西([AZ]+)
- 匹配大寫字母一次或多次替換為
_\1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.