正则表达式模式匹配

时间:2011-03-17 17:55:28

标签: java regex

大家好,我需要一个正则表达式来替换de src =和/>中的所有内容。这一行标记

src="../../../../../mailPhotos/assasins1.jpeg" alt="" width="284" height="177" /></p>

我正在为正则表达式尝试的代码如下:

String regex="src=\"../../../../../ndeveloperDocuments/mailPhotos/assasins1.jpeg\" alt=\"\" width=\"284\" height=\"177\" /></p>";
regex=regex.replaceFirst("src./>", "src='cid:"+1001+"'");

但它并没有取代任何东西。我认为正则表达式会做“替换src和/&gt;之间的所有内容”,但我认为我错了,因为它不起作用。在这种情况下使用什么样的正则表达式?。非常感谢

2 个答案:

答案 0 :(得分:2)

.只匹配一个字符。要匹配零个或多个字符,请使用.*并使用.+匹配一个或多个字符。

所以,你的代码是:

String regex="src=\"../../../../../ndeveloperDocuments/mailPhotos/assasins1.jpeg\" alt=\"\" width=\"284\" height=\"177\" /></p>";
regex=regex.replaceFirst("src.*/>", "src='cid:"+1001+"'");

答案 1 :(得分:0)

.仅匹配单个字符。要匹配任意数量的单个字符,请使用.*(0或更多)或.+(1个或更多)。

然而,这种匹配很容易出错。例如,如果您有一个类似src="foo" /> Some other content <br />的字符串,那么您的正则表达式将一直匹配到最终/>,并吞下其他内容。防止这种情况的常用方法是使用像src=[^>]+/>这样的正则表达式。 [^>]表示“除 >之外的任何字符