Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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,我正在尝试创建一个正则表达式,它将在单词(bar)中添加前缀(foo) 只有当它还没有出现时,以及当单词栏出现多次时。 也可以忽略大写字母 String s=“bar叔叔在酒吧时是一个foo bar类型的人” 因此,请尝试以下方法: String s = " uncle bar, is a foo bar kind of guy when he is at the bar "; Pattern p; Matcher m; p = Pattern.compile("(?i) bar ")

我正在尝试创建一个正则表达式,它将在单词(bar)中添加前缀(foo) 只有当它还没有出现时,以及当单词栏出现多次时。 也可以忽略大写字母

String s=“bar叔叔在酒吧时是一个foo bar类型的人”

因此,请尝试以下方法:

String s = " uncle bar, is a foo bar kind of guy when he is at the bar ";    
Pattern p;
Matcher m; 
p = Pattern.compile("(?i) bar ");
m = p.matcher(s);
if(m.find()){
       s =  s.replaceAll("(?i) bar ", " foo bar ");
}
这将导致添加foo,即使它已经存在。 i、 e.“富富酒吧那种人” 我需要一个正则表达式,以便在尝试匹配模式时将其前缀考虑在内


提前感谢

使用否定查找断言

s.replaceAll("(?i)(?<!\\bfoo )bar\\b", "foo bar");

s.replaceAll(“(?i)(?您可以使用反向查找来执行此操作

s.replaceAll("(?i)(?<!foo )bar", "foo bar")

s.replaceAll(“(?i)(?@AvinashRaj)我真的很抱歉,Avinash,但我通常会尝试在IDE上解决问题,而不是在检查后将其复制到这里。这使得问题持续了4分钟。