如何用PowerShell正则递归替换adoc文档中link格式链接为xref格式
你可以直接在原有脚本的正则规则表中新增匹配规则即可,完整可运行脚本如下:
Get-ChildItem -Path *.adoc -file -recurse | ForEach-Object { $lines = Get-Content -Path $PSItem.FullName -Encoding UTF8 -Raw $patterns = @{ '(\[\.dfn \.term])#(.*?)#' = '$1_$2_' ; # 新增的link转xref规则 'link:([^\[\]]+?)\.html\[' = 'xref:$1.adoc[' ; } $option = [System.Text.RegularExpressions.RegexOptions]::Singleline foreach($k in $patterns.Keys){ $pat = [regex]::new($k, $option) $lines = $pat.Replace($lines, $patterns.$k) } $lines | Set-Content -Path $PSItem.FullName -Encoding UTF8 -Force }
规则说明
- 只会匹配
link:xxx.html[xxx格式的内部链接,完全不会修改http/https开头的外部链接的.html后缀 - 捕获组
([^\[\]]+?)支持匹配任意长度的相对路径、多级目录路径,不会截断路径内容 - 替换时仅修改前缀
link:为xref:、后缀.html为.adoc,方括号内的展示文本、路径内容完全保留不变
提示:建议运行脚本前先备份所有adoc文件,避免误操作导致内容丢失。
内容的提问来源于stack exchange,提问作者Vladimir Markiev
相关产品推荐
相关产品推荐

