Java 使用正则表达式将第一个字符设为小写,并用空格下划线

Java 使用正则表达式将第一个字符设为小写,并用空格下划线,java,regex,pcre,Java,Regex,Pcre,我有这个字符串: 燃油附加费 我喜欢变成什么样 燃油附加费 使用正则表达式。我匹配的正则表达式如下所示 \b([A-Z])|(\s) 它给了我两个匹配我需要的 然后我尝试用这个替换正则表达式 \L\1\u2 逻辑上,第一个匹配应更改为小写,第二个匹配应替换为。 但我得到的结果是 燃油附加费 我看起来无法孤立第二场比赛。我是否需要在replace regex中附上\u 是指向我在regex101.com上尝试的正则表达式的链接。目前正则表达式是pcre,但我可能喜欢在Java中使用它 \b([A-

我有这个字符串:

燃油附加费

我喜欢变成什么样

燃油附加费

使用正则表达式。我匹配的正则表达式如下所示

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

它给了我两个匹配我需要的

然后我尝试用这个替换正则表达式

\L\1\u2

逻辑上,第一个匹配应更改为小写,第二个匹配应替换为

但我得到的结果是

燃油附加费

我看起来无法孤立第二场比赛。我是否需要在replace regex中附上
\u

是指向我在
regex101.com
上尝试的正则表达式的链接。目前正则表达式是
pcre
,但我可能喜欢在
Java
中使用它

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

\L\1\2_
正如您希望在前两个匹配后使用下划线一样


正如您希望在前两个匹配后使用下划线一样。

只使用
s.toLowerCase().replace(“,”)
?或者,如果您只希望第一个字符变为小写:
s.substring(0,1).toLowercase()+s.substring(1).replace(''.''.')
?@JBNizet谢谢。如果我用Java实现它,我将使用您的解决方案。现在我有点好奇如何用正则表达式来解决这个问题。
\b([a-Z])([a-Z]*)(\s)
\L\1\2\u3
Java无法改变通过捕获组匹配的文本的大小写。@ErwinBolwidt出于某种原因,保留了空间,导致了
燃油附加费
那么就用
s.toLowerCase().replace('.''.''.'''.
?或者,如果您只希望第一个字符变为小写:
s.substring(0,1).toLowercase()+s.substring(1).replace(''.''.')
?@JBNizet谢谢。如果我用Java实现它,我将使用您的解决方案。现在我有点好奇如何用正则表达式来解决这个问题。
\b([a-Z])([a-Z]*)(\s)
\L\1\2\u3
Java无法改变捕获组匹配的文本的大小写。@ErwinBolwidt出于某种原因保留了空间,导致了
fuel\u3