我正在尝试处理文本并替换所有以“ www”开头的情况。带有特定词(在这种情况下为“香蕉”),但是我想排除所有在“ www”之前带有“ http://”的情况。
当我使用正向前瞻时,它可以工作(只有http://www大小写发生变化),但是当我使用负向前瞻时,两个单词都将改变。
您能帮我吗?
String baseString = "replace this: www.q.com and not this:http://www.q.com";
String positiveLookahead = baseString.replaceAll("(?:http://)www([^ \n\t]*)", "Banana");
String negativeLookahead = baseString.replaceAll("(?!http://)www([^ \n\t]*)", "Banana");
//positiveLookahead works (changes only the scond phrase), but positiveLookahead does not (changes both)
答案 0 :(得分:2)
使用否定的lookbehind,(?<!http://)
:
String negativeLookahead = baseString.replaceAll("(?<!http://)www[^ \n\t]*", "Banana");
(?<!http://)www[^ \n\t]*
模式匹配:
(?<!http://)
-字符串中没有紧跟http://
的位置www
-文字www
子字符串[^ \n\t]*
-除空格,换行符和回车符外的任何0+个字符(可能您想尝试使用\\S*
)。