2011-08-21 88 views
2

样品输入:Java正则表达式:替换字符串中特定类型的url?

"http://bits.wikimedia.org/w/extensions-1.17/MobileFrontend/stylesheets/webkit.css"

我尝试:"http://.*?/stylesheets/webkit.css"没有找到任何匹配

"http://""webkit.css"之间的URL部分是可变的

谢谢!

我的坏,我用的是Java的替代()函数,而不是replaceFirst()或的replaceAll()

+0

你适当地逃脱你的周期,你怎么想?在这里替换字符串或字符串?你能显示更多的代码吗? –

+1

你使用什么代码?你的正则表达式非常简单,应该工作。@Hovercr aft完整的鳗鱼,即使他没有,它应该匹配无论如何(虽然它确实会更好地逃脱它们) – Vache

+0

@Vache:哟,你说得对,因为我刚刚测试过它们。 –

回答

3

一个解决方案使用组

String input = "http://bits.wikimedia.org/w/extensions-1.17/" + 
       "MobileFrontend/stylesheets/webkit.css"; 

String replacement = "example.com"; 

String result = input.replaceAll("(http://).*?(/stylesheets/webkit\\.css)", 
       "$1" + replacement + "$2"); 

结果将等于http://example.com/stylesheets/webkit.css


另一种选择使用一下变通

String result = input.replaceAll("(?<=http://).*(?=/stylesheets/webkit\\.css)", 
           replacement); 

它说“在http:///stylesheets/webkit.css之间,replacement取代一切