做第一个字符小写和空间正则表达式
问题描述:
强调我有这个字符串:做第一个字符小写和空间正则表达式
Fuel surcharge
,我喜欢使用正则表达式变成
fuel_surcharge
。我的正则表达式匹配看起来像这样
\b([A-Z])|(\s)
,这让我的两场比赛,我需要。
然后我与此尝试替换正则表达式
\L\1_\2
与第一匹配应该改变为小写和第二匹配应与_
但结果我被替换的逻辑“M给出的是
f_uel_ surcharge
我看起来像我无法隔离第二场比赛。我需要在替换正则表达式中包含_
吗?
Here是我在regex101.com
上试过的正则表达式的链接。目前正则表达式为pcre
,但可能我喜欢在Java
中使用它。
答
\b([A-Z])([a-z]*)(\s)
\L\1\2_
当您在第比赛后想下划线。
如何只's.toLowerCase()代替(””, '_')'?或者,如果您只想让第一个字符变成小写:'s.substring(0,1).toLowercase()+ s.substring(1).replace('','_')'? –
@JBNizet谢谢。如果我在Java中实现它,我会使用你的解决方案。现在我有点好奇如何用正则表达式来解决它。 – g3blv
'\ B([A-Z])([A-Z] *)(\ S)''到\大号\ 1 \ 2_ \ 3' –