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

ijxebb2r  于 2023-06-25  发布在  Java
关注(0)|答案(3)|浏览(142)

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

"ExampleString1            ;" -> "ExampleString1;"
"ExampleString2  ;" -> "ExampleString2;"
"ExampleString3     ;" -> "ExampleString3;"
"ExampleString1 ; ExampleString1 ;" -----> ExampleString1;ExampleString1

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

czq61nw1

czq61nw11#

试试这个:

replaceAll("\\s+;", ";").replaceAll(";\\s+", ";")
zwghvu4y

zwghvu4y2#

基本上做一个匹配先找到

(.+?) ->  anything in a non-greedy fashion
(\\s+) -> followed by any number of whitespaces
(;) -> followed by a ";"
$ -> end of the string

然后通过$1$3删除第一个和第三个组(空格)

String test = "ExampleString1            ;"; 
test = test.replaceFirst("(.+?)(\\s+)(;)$", "$1$3");
System.out.println(test); // ExampleString1;
fbcarpbf

fbcarpbf3#

你只需要像这样转义 meta字符\s

"ExampleString1   ;".replaceAll("\\s+;$", ";")

相关问题