我正在编写代码来替换一些表达式,如下所示
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
str=str.replaceAll("http\\S+", "URL "); //used answer given
System.out.println(str);
我正在提供输入
iCloud hits 20M users http://www.google.com/HTpUTBFK via @cnet
并想输出
ENGLISH URL ENGLISH @cnet
但我正在
iCloud hits 20M users URL @cnet
。
之后我想将其修改为
ENGLISH URL @cnet
修改会将不遵循特殊字符(如#,%,@等)的句子的所有部分更改为ENGLISH。
答案 0 :(得分:3)
如果你想要的是替换网址,那么正则表达式会更简单:
http\\S+
就是这样!
它扫描http
,然后扫描它可以找到的所有非空格。它停在第一个空间。
为了安全起见并避免出现一些以http开头的单词,你可以让正则表达式更长更安全:
'http://\\S+'
答案 1 :(得分:0)
str=str.replaceAll("http://"+"[\\w|\\.|/]*"+"\\s", "URL ");
使用它应该适合你,它从http://开始匹配并匹配任何普通字符,点和斜线,直到它遇到空格。然后将其替换为" URL"。
您也可以使用"https?://"
启动它,以匹配以http和https开头的链接。
答案 2 :(得分:0)
试试这个
str=str.replaceAll("http://" + ".*([.]).*([/])\\w*" + "\\s", "URL ");
您正在使用.*
是您的代码。它匹配所有字符串与下一个空格。我不知道为什么它不起作用。但是,如果您使用\\w
代替.*
,那么您的代码就可以使用。
答案 3 :(得分:0)
你可以试试这个,
str=str.replaceAll("((www\\.[^\\s]+)|(https?://[^\\s]+))", "URL");