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

时间:2018-09-11 11:25:17

标签: java regex

我正在尝试将所有可以包含任意数量的空格,后跟“;”的字符串替换为仅“;”但由于存在多个空格,我感到困惑。

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

我尝试过这样的操作:example.replaceAll("\\s+",";"),但是问题是可能有多个空格,这使我感到困惑

3 个答案:

答案 0 :(得分:2)

尝试一下:

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

答案 1 :(得分:1)

基本上是先找到一个匹配项

(.+?) ->  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;

答案 2 :(得分:0)

您只需要像这样转义元字符"ExampleString1 ;".replaceAll("\\s+;$", ";")

catch(PDOException $e) {
    handler1($e);
} catch(Exception $e){
    handler2($e);
}