目标 Markdown 文件是类似这样的:
<td sda> sdfsdf
//不能被匹配的单元格
wee</td>
<td sdff>sdfsdfsdf
** 需要被匹配的粗体**
sd[需要被匹配的链接]( http)sdfsd
两边有空格
<p>其他 HTML 标签 <br/>abc</p>
</td>
</table>
## Markdown 语法的部分
[不能被匹配的链接]( http)
**不能被匹配的粗体**
<table>
<th>aa</th
<td> sdfsdf 不能被匹配的单元格 sdfsdf
wee</td>
<td> sdfsdf 不能被匹配的单元格 sdfsdf
wee</td>
<td> ** 需要被匹配的粗体**
sd[需要被匹配的链接]( http)sdfsdsdfsdf
<p> 其他 HTML 标签 <br/>abc </p>
</td>
<td sdff>sdfsdfsdf
//不能被匹配的单元格
<b>asdasd</b>
</td>
要求是不能匹配没有 Markdown 加粗或链接的 HTML 单元格,而且返回结果除了<td, </td>, [, ], (和)以外必须被分组捕捉以用于批量替换。
可以一次只匹配一个单元格中的一个 Markdown 链接或加粗内容,然后多次替换来解决,但是 HTML 表格之外的 Markdown 链接不能被匹配。
我之前尝试用<td([^>]*?)>([\s\S]*?)\[(.*?)\]\((.*?)\)([\s\S]*?)<\/td>替换成<td$1>$2<a href="$4">$3</a>$5</td>,但是([\s\S\n]*?)会匹配表格外的内容。
目前看难点在于如何匹配<td([^>]*?)>和\[(.*?)\]\((.*?)\)之间所有内容(包括换行和空格),如果存在</td>则不匹配该单元格
请问该使用什么样的正则表达式。
<td sda> sdfsdf
//不能被匹配的单元格
wee</td>
<td sdff>sdfsdfsdf
** 需要被匹配的粗体**
sd[需要被匹配的链接]( http)sdfsd
两边有空格
<p>其他 HTML 标签 <br/>abc</p>
</td>
</table>
## Markdown 语法的部分
[不能被匹配的链接]( http)
**不能被匹配的粗体**
<table>
<th>aa</th
<td> sdfsdf 不能被匹配的单元格 sdfsdf
wee</td>
<td> sdfsdf 不能被匹配的单元格 sdfsdf
wee</td>
<td> ** 需要被匹配的粗体**
sd[需要被匹配的链接]( http)sdfsdsdfsdf
<p> 其他 HTML 标签 <br/>abc </p>
</td>
<td sdff>sdfsdfsdf
//不能被匹配的单元格
<b>asdasd</b>
</td>
要求是不能匹配没有 Markdown 加粗或链接的 HTML 单元格,而且返回结果除了<td, </td>, [, ], (和)以外必须被分组捕捉以用于批量替换。
可以一次只匹配一个单元格中的一个 Markdown 链接或加粗内容,然后多次替换来解决,但是 HTML 表格之外的 Markdown 链接不能被匹配。
我之前尝试用<td([^>]*?)>([\s\S]*?)\[(.*?)\]\((.*?)\)([\s\S]*?)<\/td>替换成<td$1>$2<a href="$4">$3</a>$5</td>,但是([\s\S\n]*?)会匹配表格外的内容。
目前看难点在于如何匹配<td([^>]*?)>和\[(.*?)\]\((.*?)\)之间所有内容(包括换行和空格),如果存在</td>则不匹配该单元格
请问该使用什么样的正则表达式。