Java Regex To大写

Ash*_*ton 4 java regex

所以我有一个字符串

2000cc车辆的翻新发动机

我想把它变成

2000CC车辆的翻新发动机

有资本cc在2000CC.我显然不能这样做,text.replaceAll("cc","CC");因为它会用资本版本替换cc的所有出现,所以加速器这个词将成为一个CSelerator.在我的场景中,前四位数字将始终是四位数后跟字母cc,所以我认为这可以用正则表达式来完成.

我的问题是如何在Java中将cc转换为CC,当它跟随4位数并获得我期望的结果时?

String text = text.replaceAll("[0-9]{4}[c]{2}", "?");
Run Code Online (Sandbox Code Playgroud)

Psh*_*emo 7

你可以试试

text = text.replaceAll("(\\d{4})cc", "$1CC");
//                          ?          ?
//                          +??????????+
Run Code Online (Sandbox Code Playgroud)

诀窍是将数字放在组中(通过括号),然后在替换部分中使用来自该组的匹配(通过$x哪里x是组号).

如果要确保匹配的文本不是其他单词的一部分,则可以使用单词边界 包围该正则表达式"\\b".您还可以使用look-adound机制来确保匹配文本之前和/或之后没有字母数字字符.