Java表达式匹配
我写一个代码来替换一些表达式如下Java表达式匹配
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
的修改变化不遵循一个特殊字符(如#,%,@等),英语句子的所有部分。
str=str.replaceAll("http://"+"[\\w|\\.|/]*"+"\\s", "URL ");
使用此应该适合您,它会从http://开始匹配,并匹配任何常规字符,圆点和斜线,直到遇到空格。然后用“URL”替换它。
您也可以从"https?://"
开始,以匹配以http和https开头的链接。
实际上你的代码正在工作,但部分。我可以编辑问题以显示如何? – thepurpleowl
改为使用以色列Unterman建议,简单得多! – asiew
如果你想要的是更换网址,正则表达式可以更简单:
http\\S+
而这一切!
它扫描http
,然后查找所有非空格。它停在第一个空间。
为了安全起见,避免以http一些字的情况下,你可以使正则表达式的时间长一点,更安全:
'http://\\S+'
你是先生,是天才。 – dorukayhan
伟大的建议!您也可以使用“https?://”来启动它以匹配以http和https开头的链接。 – asiew
如果我想将“Big mo:在一周内通过@cnet将http://www.google.co.in/HTp”更改为“ENGLISH URL ENGLISH @cnet”。就像在将URL更改为URL之后一样,我想将其后没有跟着特殊字符(@,&等)的其他部分更改为英文。怎么做? – thepurpleowl
试试这个
str=str.replaceAll("http://" + ".*([.]).*([/])\\w*" + "\\s", "URL ");
您使用
.*
是你的代码。它匹配所有字符串与下一个空间。我不知道为什么它不起作用。但是,如果您使用\\w
代替.*
,那么您的代码将起作用。
请编辑更多信息。仅限代码和“尝试这个”的答案是不鼓励的,因为它们不包含可搜索的内容,也不解释为什么有人应该“尝试这个”。 – Paritosh
好@Paritosh。我没有编辑我的代码。 –
,你可以尝试这个,
str=str.replaceAll("((www\\.[^\\s]+)|(https?://[^\\s]+))", "URL");
为什么你捕捉到一个单点和斜线,并把它放在一个无用的群体? –