描述
您可以使用以下正则表达式执行此操作
(<a\b[^>]*?\btitle=(['"]))(.*?)\2
概括
(
开始捕获组 1
<a\b
使用开尖括号和a
后跟一个分词
[^>]*?
消耗所有非右尖括号字符...这会强制正则表达式留在锚标记内
\btitle=
使用一个分词title=
,这个分词有助于做一些额外的检查
(['"])
捕获组 2,确保使用开放的单引号或双引号
)
关闭捕获组 1
(.*?)
开始捕获组 3,并且非贪婪消耗以收集引号内的所有文本
\2
从捕获组 2 中引用回字符串,如果您使用单引号打开值,则需要单引号来关闭值。如果您使用双引号,则相同。
在替换命令中,我只是将找到的整个字符串替换为<a to the close quote
:组捕获 1,然后是所需的文本,NewValue
然后是组捕获 2 的右引号。
PHP 示例
<?php
$sourcestring="<a href="example.com" title="blah3x">Example</a>";
echo preg_replace('/(<a\b[^>]*?\btitle=([\'"]))(.*?)\2/im','\1NewValue\2',$sourcestring);
?>
$sourcestring after replacement:
<a href="example.com" title="NewValue">Example</a>
免责声明
由于通过 html 解析器解析文本不是所需的解决方案,因此我将跳过关于使用 Regex 解析 html 的常用肥皂盒免责声明。