我需要处理HTML内容并将IMG SRC值替换为实际数据。为此我选择了正则表达式。
在我的第一次尝试中,我需要找到IMG标签。为此,我使用以下表达式:
<img.*src.*=\s*".*"
然后在IMG标签内我正在寻找SRC =“...”并将其替换为新的SRC值。我使用以下表达式来获取SRC:
src\s*=\s*".*"\s*
第二个表达式有问题:
以下文字适用:
<img alt="3D""" hspace=
"3D0" src="3D"cid:TDCJXACLPNZD.hills.jpg"" align=
"3dbaseline" border="3d0" />
但对于以下情况,它不会:
<img alt="3D""" hspace="3D0" src=
"3D"cid:UHYNUEWHVTSH.lilies.jpg"" align="3dbaseline"
border="3d0" />
表达式返回
会发生什么src="3D"cid:TDCJXACLPNZD.hills.jpg"" align=
"3dbaseline"
它不会按预期返回src部分。
我正在使用C ++ Boost正则表达式库。
请帮我解决问题。
谢谢, 希尔米。
答案 0 :(得分:2)
问题是.*
是一个“贪婪”的匹配 - 它会尽可能多地抓取文本,同时仍允许正则表达式匹配。你可能想要的是这样的:
src\s*=\s*"[^"]*"\s*
只会匹配src字符串中的非双引号字符,因此不会超过结束的双引号。
答案 1 :(得分:0)
您的第一个正则表达式对我的示例文本不起作用。在寻找特定的HTML标签时,我通常会使用它:
<img[^>]*>
另外,请尝试使用第二个表达式:
src\s*=\s*"[^"]*"\s*
这有帮助吗?