$1 和 $2 代表正则表达式中捕获组中的文本。捕获组是括号内的内容。
( // start first capture group
#d6d6d4 // match #d6d6d4
.+?> // any character, non-greedy, up to '>'
.+?<p> // any character, non-greedy, up to <p>
<a.+?> // an <a..> tag, consuming everything up to '>'
.+? // all characters from <a> to </a>
) // close the first capture group before the '</a>'
</a> // literal '</a>'
( // start second capture group
.+? // match all, non-greedy up to '</td>'
) // close capture group before '</td>'
</td> // literal '</td>'
所以如果你有这个字符串:<td color=#d6d6d4 foo=bar>Hello, world<p><a href=http://foo.com>foo link</a>some more text</td>
$1 匹配:#d6d6d4 foo=bar>Hello, world<p><a href=http://foo.com>foo link
$2 匹配:some more text
所以字符串转换为:
<td color=#d6d6d4 foo=bar>Hello, world<p><a href=http://foo.com>foo linksome more text</a></td>
这基本上意味着</a>
标签在之后some more text
(或者</td>
如果你愿意的话就在之前)移动