簡體   English   中英

正則表達式在所有大寫單詞之前插入一個字符

[英]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

Regex Demo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM