Java正则表达式替换大字符串中的多个文件路径

标签 java regex string parsing html-parsing

所以我不是正则表达式专业人士,我正在寻找一种好方法来做到这一点。我有一个大字符串,其中包含可变数字 <img>标签。我需要将所有这些图像的路径更改为 images/ 。大字符串还包含其他内容,而不仅仅是这些 img。

<img src='http://server.com/stuff1/img1.jpg' />
<img src='http://server.com/stuff2/img2.png' />

将服务器名称替换为 ReplaceAll()我可以做,这是中间的变量路径,我不知道如何包含。它不一定需要是正则表达式,但循环整个字符串似乎很浪费。

最佳答案

以下内容应该适用于替换所有 <img>链接到 server.com 中的 jpg 的标签:

s.replaceAll("<img src='http://server.com[^']*/([^']*)' />", "<img src='images/$1' />");

如果您在 src 周围使用双引号属性:

s.replaceAll("<img src=\"http://server.com[^\"]*/([^\"]*)\" />", "<img src=\"images/$1\" />");

这有效是因为 [^']*/将匹配尽可能多的非单引号字符,然后是文字“/”,因此它将消耗整个路径。如果都是<img>标签来自 server.com 您可以删除 http://server.com正则表达式将以同样的方式工作。

请注意,如果您事先知道所有图像标签都需要替换,或者您的字符串仅包含 <img>,则可以进一步缩短此长度。标签,例如,您可以使用以下内容来替换所有 src 中的路径属性:

s.replaceAll("src='[^']*/([^']*)'", "src='images/$1'");

如果替换的内容超出了您的预期,只需添加更多您想要匹配到正则表达式的文字字符串即可。

关于Java正则表达式替换大字符串中的多个文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13767616/

相关文章:

Javafx Media 类无法正常工作,没有任何错误

Java:使用未知键解析 JSON 以映射

java - 在静态类中同步文件输出

javascript - 为什么下划线(_)不被视为非单词字符?

java - 在java中将String转换成时间格式

java - 无法使用 sun-web.xml 设置字符编码

java - 如何在 RegExp 中使用 ^(字符串开头)

regex - 在 vim 中自动检测 python 3 文件

c++ - 获取字符串的最后一行

python - 如何确保字符串的格式正确