gpt4 book ai didi

Java正则表达式替换一个接一个的单词

转载 作者:行者123 更新时间:2023-11-29 04:17:29 25 4
gpt4 key购买 nike

我有一个字符串:“Foo value 1.1.1”。

我想用其他东西替换 1.1.1,比如 ***

我尝试了 str.replaceAll("[0-9].[0-9].[0-9]", "***") 并且它有效,但是 1.1.1 可以更改为“1.1”或“1.1.a”或“111”等

虽然这个词后面总是跟着“值”这个词。因此,我基本上想替换 value 之后的单词,如何使用 replaceAll 来完成。

最佳答案

您可以使用像 (value\s)([\w\.?]+) 这样的正则表达式匹配并分组,然后使用$1$2替换它。

在你的例子中,$1代表vaule\s$2代表[\w\.]+ ,我们只需要保留$1并替换 $2

    String str1 = "Foo value 1.1.1".replaceAll("(value\\s)([\\w\\.?]+)", "$1AAA");
String str2 = "Foo value 1.1".replaceAll("(value\\s)([\\w\\.?]+)", "$1BBB");
String str3 = "Foo value Stackoverflow".replaceAll("(value\\s)([\\w\\.?]+)", "$1CCC");
System.out.println(str1);//output: Foo value AAA
System.out.println(str2);//output: Foo value BBB
System.out.println(str3);//output: Foo value CCC

更新,更优雅的方法是将正则表达式更改为(?<=value\s)[\w\.?]+ ,输出是一样的

String str1 = "Foo value 1.1.1".replaceAll("(?<=value\\s)[\\w\\.?]+", "AAA");
String str2 = "Foo value 1.1".replaceAll("(?<=value\\s)[\\w\\.?]+", "BBB");
String str3 = "Foo value Stackoverflow".replaceAll("(?<=value\\s)[\\w\\.?]+", "CCC");
System.out.println(str1);//output: Foo value AAA
System.out.println(str2);//output: Foo value BBB
System.out.println(str3);//output: Foo value CCC

关于Java正则表达式替换一个接一个的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51434018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com