在正则表达式中提取完整匹配和最后一个标记匹配

时间:2013-06-20 19:36:49

标签: javascript jquery html regex token

我这里有一个有趣的问题。我有一个来自Excel的纯文本URL,我需要将其更改为具有唯一正文的HTML URL。这是javascript的正则表达式代码:

text = text.toString().replace(/=hyperlink\(([@\\\w\s\(\)-\.\/]+)\)/g, "<a href='file:///$1'>$1</a>");

这对它的作用非常好。例如,文字是:

=hyperlink("\\share\folder\log\2013\13-05-13\13-05-13.txt")

正则表达式将其变为

<a href="file:///\\share\folder\log\2013\13-05-13\13-05-13.txt">\\share\folder\log\2013\13-05-13\13-05-13.txt</a>

但是,我需要内部HTML只是文本文件名:

<a href="file:///\\share\folder\log\2013\13-05-13\13-05-13.txt">13-05-13.txt</a>

为了使问题进一步复杂化,正则表达式所经历的原始文本不是单一事件。它是一个包含100个行的整个电子表格。所以正则表达式将匹配并在一次操作中替换100个这些字符串。

希望有可能在整个字符串的一个正则表达式中完成所有操作,但我想我可以先遍历字符串的每一行......

如果使用一个正则表达式引擎无法做到这一点,您认为最好的方法是什么? (没有PHP / Python / Server端。只需Javascript,HTML,Jquery等)。

1 个答案:

答案 0 :(得分:1)

我想你可以使用这个正则表达式:

=hyperlink\("([@\\\w\s\(\)\-\.\/]+\\([^"]+))"\)

这个新的替代品:

<a href="file:///$1">$2</a>

我不确定你的正则表达式是如何工作的,但我在正则表达式中添加了引号,并在替换中用双引号替换了单引号。如果需要,还原那些。

Demo