Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式替换紧跟其后的单词_Java_Regex - Fatal编程技术网

Java正则表达式替换紧跟其后的单词

Java正则表达式替换紧跟其后的单词,java,regex,Java,Regex,我有一个字符串:“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来替换它。您可以使用类似regex的(value\s)([\w\.?]+)来匹配和分组它,然后使用$1和$2来替换它 在您的情况下,$1

我有一个字符串:“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
来替换它。您可以使用类似regex的
(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


更新,一个更优雅的方法是将正则表达式更改为
(?),或者,只是尝试一些新的东西:-p-您可以尝试使用“正向查找”:

groovy:000>a=“你好,Moi”
groovy:000>p=java.util.regex.Pattern.compile(“?
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
groovy:000> a = "hello there Moi"
groovy:000> p = java.util.regex.Pattern.compile("(?<=there\\s)\\w+")
groovy:000> m = p.matcher(a)
groovy:000> m.replaceAll("John")
===> hello there John