我的编辑器中有很多文本,括号中是引用。举个例子。“这是文本,欢迎来到我的文本 [11]。我们有几个来源 [23]。我能为你做什么 [33]”我想找到括号之间的每个数字,并用包含它的锚标记替换该数字,就像这样<xref ref-type="bibr" rid="R11">[11]</xref>,然后<xref ref-type="bibr" rid="R23">[23]</xref>我现在正在做的是在编辑器中用正则表达式( \[.*?] )查找括号中的数字然后复制并粘贴我要替换的内容。当有超过 100 个要替换的引用时,这很耗时。有没有办法找到,将其存储在变量中,然后用所述变量替换?我想出的一种可能的解决方案是使用 JavaScript,但是我无法让它完全正常工作,正如我的输出所证明的那样。代码:const document = 'This is text, welcome to my text [11]. We have several sources [23]. What can I do for you [33]'const regex = /\[.*?\]/gmlet result = document.match(regex);let array = resultvar arrayLength = array.length;console.log(arrayLength);for (var i = 0; i < arrayLength; i++) { console.log(document.replace(regex, '<xref ref-type="bibr" rid="R' + array[i] + '">' + array[i] + "</xref>"));}控制台输出:This is text, welcome to my text <xref ref-type="bibr" rid="R[11]">[11]</xref>. We have several sources <xref ref-type="bibr" rid="R[11]">[11]</xref>. What can I do for you <xref ref-type="bibr" rid="R[11]">[11]</xref>This is text, welcome to my text <xref ref-type="bibr" rid="R[23]">[23]</xref>. We have several sources <xref ref-type="bibr" rid="R[23]">[23]</xref>. What can I do for you <xref ref-type="bibr" rid="R[23]">[23]</xref>This is text, welcome to my text <xref ref-type="bibr" rid="R[33]">[33]</xref>. We have several sources <xref ref-type="bibr" rid="R[33]">[33]</xref>. What can I do for you <xref ref-type="bibr" rid="R[33]">[33]</xref>如您所见,我还需要从rid=属性中删除括号。我也想在编辑器本身中完成这项工作。如果不可能,那么我想我可以使用 node.js 并写入文件。任何其他解决方案也会有所帮助。这应该在 Python 中完成吗?
1 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
这段 PHP 代码完成了它:
<?php
$str = 'This is text, welcome to my text [11]. We have several sources [23]. What can I do for you [33]';
function addLink ($matches){
$noBrackets = str_replace('[', '', $matches[0]);
$noBrackets = str_replace(']', '', $noBrackets);
$output = '<xref ref-type="bibr" rid="R'.$noBrackets.'">'.$matches[0].'</xref>';
return $output;
}
$newString = preg_replace_callback('#\[\d+\]#', 'addLink', $str);
echo '<p>'.$newString.'</p>';
?>
添加回答
举报
0/150
提交
取消