猿问

用正则表达式替换 Java 中的空格和分号

我试图用一个“;”替换所有可以包含任意数量空格后跟结尾“;”的字符串 但我很困惑,因为有多个空格。


"ExampleString1            ;" -> "ExampleString1;"

"ExampleString2  ;" -> "ExampleString2;"

"ExampleString3     ;" -> "ExampleString3;"

"ExampleString1 ; ExampleString1 ;" -----> ExampleString1;ExampleString1

我试过这样:example.replaceAll("\\s+",";")但问题是可能有多个空格,这让我很困惑


BIG阳
浏览 393回答 3
3回答

SMILET

试试这个:replaceAll("\\s+;", ";").replaceAll(";\\s+", ";")

一只名叫tom的猫

基本上做匹配首先找到(.+?) ->  anything in a non-greedy fashion(\\s+) -> followed by any number of whitespaces(;) -> followed by a ";"$ -> end of the string而不是简单地删除第二组(空白),只需通过 $1$3String test = "ExampleString1            ;"; test = test.replaceFirst("(.+?)(\\s+)(;)$", "$1$3");System.out.println(test); // ExampleString1;

Qyouu

你只需要\s像这样转义元字符:"ExampleString1   ;".replaceAll("\\s+;$", ";")
随时随地看视频慕课网APP

相关分类

Java
我要回答