2010-07-13 105 views
21

我需要用小寫字母代替在變量名大寫字母,並添加空間如何使用正則表達式替換小寫的大寫?

例如:

NotImplementedException應該Not implemented exception UnhandledException應該Unhandled exception

+2

用什麼編程語言?大多數情況下,單獨的正則表達式不會允許你這樣做,你需要運行一些代碼 – 2010-07-13 08:34:36

+0

語言是C#但我需要正則表達式:( – aron 2010-07-13 08:41:11

+1

是否有一個特殊原因需要使用正則表達式?大多數時候人們會問這樣的問題,他們正在假設他們需要的答案 – 2010-07-13 09:11:28

回答

35

既然你沒有指定語言,我將在C#中給出一個例子。我相信你的語言會提供類似的東西。

String s = "NotImplementedException"; 
s = Regex.Replace(s, @"\B[A-Z]", m => " " + m.ToString().ToLower()); 
// s = "Not implemented exception" 
+4

A這個答案的更好的C#版本可以支持任何大寫字母(即使是重音字母):'String s =「NotImplementedException」; s = Reg ex.Replace(s,@「\ B \ p {Lu}」,m =>「」+ m.ToString()。ToLower());' – 2014-11-03 11:00:42

-5

@Ignacio,我不同意。當然,這不是一個可以用簡單的正則表達式在一個語句中完成的事情。但sed命令:

sed -e 's/\([a-zA-Z]\)C/\1 c/g' infile.txt 

將替換「C」「C」的所有出現在「C」立即被一個字母開頭。所有OP都要做26個變種,這可能很乏味。並且獲得案例改變的條件可能也很困難,但使用正則表達式進行全局搜索和替換的情況總是如此。

+2

這是一個嚴肅的答案,還是你只是與Ignacio爭論? – 2015-03-23 17:44:26

1

它可以與單個命令的sed來完成:

$ echo "NotImplementedException" | sed 's/\B[A-Z]/ \l&/g' 
Not implemented exception 

但支持\l(和\u\L\U\E)是在不同的語言正則表達式實現中罕見。我只能確定Perl已經實現了。

相關問題