java表达式匹配

时间:2016-08-24 06:02:24

标签: java regex

我正在编写代码来替换一些表达式,如下所示

    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。

4 个答案:

答案 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");