2017-05-14 45 views
1

強調我有這個字符串:做第一個字符小寫和空間正則表達式

Fuel surcharge

,我喜歡使用正則表達式變成

fuel_surcharge

。我的正則表達式匹配看起來像這樣

\b([A-Z])|(\s)

,這讓我的兩場比賽,我需要。

然後我與此嘗試替換正則表達式

\L\1_\2

與第一匹配應該改變爲小寫和第二匹配應與_

但結果我被替換的邏輯「M給出的是

f_uel_ surcharge

我看起來像我無法隔離第二場比賽。我需要在替換正則表達式中包含_嗎?

Here是我在regex101.com上試過的正則表達式的鏈接。目前正則表達式爲pcre,但可能我喜歡在Java中使用它。

+2

如何只's.toLowerCase()代替(」」, '_')'?或者,如果您只想讓第一個字符變成小寫:'s.substring(0,1).toLowercase()+ s.substring(1).replace('','_')'? –

+0

@JBNizet謝謝。如果我在Java中實現它,我會使用你的解決方案。現在我有點好奇如何用正則表達式來解決它。 – g3blv

+0

'\ B([A-Z])([A-Z] *)(\ S)''到\大號\ 1 \ 2_ \ 3' –

回答

0
\b([A-Z])([a-z]*)(\s) 

\L\1\2_ 

當您在第比賽後想下劃線。

相關問題