过早的组捕获 PHP 正则表达式
Premature group capturing PHP regex
我有 HTML 存储在 MySQL 数据库中,我正在从 Joomla 迁移到新的 WordPress 安装。我需要删除每页底部的一些标题文字。
HTML的例子:
<a href="some/link">link 1</a><p>some really long description</p><a href="another/link">link 2</a>CAPTION TEXT HERE[/caption]
我正在使用 PHP 脚本查询数据库并进行正则表达式匹配。
到目前为止我的正则表达式:
/(<\/a>)(.*?)(\[\/caption\])/
我需要完全删除第二个字幕组(此处为字幕文本),因此实际上用第 1 组和第 3 组替换第 1,2 组和第 3 组。第 2 组可以包含任何字母数字或特殊字符。
我 运行 遇到的问题是捕获组 1 正在匹配 link 1 的结束锚标记并一直持续到 [/caption]
发生的事情是:
</a><p>some really long description</p><a href="another/link">link 2</a>CAPTION TEXT HERE[/caption]
被替换为:
<a href="some/link">link 1</a>[/caption]
当我真正需要的是:
<a href="some/link">link 1</a><p>some really long description</p><a href="another/link">link 2</a>[/caption]
提前致谢!
男性不要在匹配的文本中包含 >
(<\/a>)([^>]*?)(\[\/caption\])
我有 HTML 存储在 MySQL 数据库中,我正在从 Joomla 迁移到新的 WordPress 安装。我需要删除每页底部的一些标题文字。
HTML的例子:
<a href="some/link">link 1</a><p>some really long description</p><a href="another/link">link 2</a>CAPTION TEXT HERE[/caption]
我正在使用 PHP 脚本查询数据库并进行正则表达式匹配。
到目前为止我的正则表达式:
/(<\/a>)(.*?)(\[\/caption\])/
我需要完全删除第二个字幕组(此处为字幕文本),因此实际上用第 1 组和第 3 组替换第 1,2 组和第 3 组。第 2 组可以包含任何字母数字或特殊字符。
我 运行 遇到的问题是捕获组 1 正在匹配 link 1 的结束锚标记并一直持续到 [/caption]
发生的事情是:
</a><p>some really long description</p><a href="another/link">link 2</a>CAPTION TEXT HERE[/caption]
被替换为:
<a href="some/link">link 1</a>[/caption]
当我真正需要的是:
<a href="some/link">link 1</a><p>some really long description</p><a href="another/link">link 2</a>[/caption]
提前致谢!
男性不要在匹配的文本中包含 >
(<\/a>)([^>]*?)(\[\/caption\])