正则表达式:查找和;替换为字符串

时间:2014-07-22 07:26:14

标签: java regex

我有一个字符串

String customHtml = "<html><body><iframe src=https://zarabol.rediff.com/widget/end-of-cold-war-salman-hugs-abhishek-bachchan?search=true&header=true id=rediff_zarabol_widget name=rediff_zarabol_widget scrolling=auto transparency= frameborder=0 height=500 width=100%></iframe></body></html>";

我需要用另一个字符串替换weburl的最后一个索引。在上面的示例中,替换

end-of-cold-war-salman-hugs-abhishek-bachchan

srk-confesses-found-gauri-to-be-physically-attractive

我尝试使用Lazy /begin.*?end/但它失败了。 任何帮助将受到高度赞赏。 提前致谢。

4 个答案:

答案 0 :(得分:2)

正则表达式:

(?<=\/)[^\/]*(?=\?)

Java正则表达式:

(?<=/)[^/]*(?=\\?)

替换字符串:

srk-confesses-found-gauri-to-be-physically-attractive

DEMO

Java代码将是,

String url= "<html><body><iframe src=https://zarabol.rediff.com/widget/end-of-cold-war-salman-hugs-abhishek-bachchan?search=true&header=true id=rediff_zarabol_widget name=rediff_zarabol_widget scrolling=auto transparency= frameborder=0 height=500 width=100%></iframe></body></html>";
String m1 = url.replaceAll("(?<=\\/)[^\\/]*(?=\\?)", "srk-confesses-found-gauri-to-be-physically-attractive");
System.out.println(m1);

IDEONE

答案 1 :(得分:1)

这应该这样做:

url = url.replaceAll("(?<=/)[^/?]+(?=\\?)", "your new text");

答案 2 :(得分:0)

正则表达式: [^ /] *?(?:?\)

您必须删除&#34; /&#34;来自正则表达式。

答案 3 :(得分:0)

正如其他人所说,DOM解析器会更好。完成后,这是一个适用于您输入的正则表达式解决方案:

String replaced = yourString.replaceAll("(https://\\S+/)[^?]+", 
                    "$1srk-confesses-found-gauri-to-be-physically-attractive");

<强>解释

  • (https://\\S+/)向第1组捕获文字https://,任何不是空格\S+的字符,以及正斜杠/
  • [^?]+匹配任何非?的字符(要替换的文字)
  • 我们用$1第1组(未更改)和您指定的文本
  • 替换