我正在尝试将所有可以包含任意数量的空格,后跟“;”的字符串替换为仅“;”但由于存在多个空格,我感到困惑。
"ExampleString1 ;" -> "ExampleString1;"
"ExampleString2 ;" -> "ExampleString2;"
"ExampleString3 ;" -> "ExampleString3;"
"ExampleString1 ; ExampleString1 ;" -----> ExampleString1;ExampleString1
我尝试过这样的操作:example.replaceAll("\\s+",";")
,但是问题是可能有多个空格,这使我感到困惑
答案 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);
}