我有很多参考文献,我希望用文本中更下方的锚点替换。链接有一个非常规则的形式,所以它应该是非常可行的 - 至少使用脚本:
参考“[44]”应替换为以下html代码:[<a href="ref44">44</a>]
。
那个很容易。使用反向引用进行简单替换。但是有一个正则表达式(vim dialect,python,或者perl,如果必须的话。恐怖!)可以将以下内容转换为类似的链接:[44,45,77,91]
?
也就是说,每个数字一个链接,其中链接组由一对方括号包围。
由于这涉及(理论上无界)内存,它不会用FSM映射1:1,因此应该由某种下推自动机处理,而不是正则表达式,但是一些方言更强大所以......
答案 0 :(得分:1)
您可以重新运行此正则表达式替换,直到不再进行替换。
正则表达式:(\[(?:<a(?=\s|>)(?:[^>=|&)]|='(?:[^']|\\')*'|="(?:[^"]|\\")*"|=[^'"][^\s>]*)*>.*?<\/a>,)*)(\d+)([,\]])
替换为:$1<a href="ref$2">$2</a>$3
捕获组1的部分将匹配事件最复杂的复杂锚标记。
示例文字
[22][44,45,77,91]
替换后
第一次:
[<a href="ref22">22</a>][<a href="ref44">44</a>,45,77,91]
第二次:
[<a href="ref22">22</a>][<a href="ref44">44</a>,<a href="ref45">45</a>,77,91]
第三次:
[<a href="ref22">22</a>][<a href="ref44">44</a>,<a href="ref45">45</a>,<a href="ref77">77</a>,91]
第四次:
[<a href="ref22">22</a>][<a href="ref44">44</a>,<a href="ref45">45</a>,<a href="ref77">77</a>,<a href="ref91">91</a>]