正则表达式在html标签之间添加一个单词(新手)

时间:2013-08-07 02:32:59

标签: html regex notepad++

我似乎无法创建一个在这种情况下可以工作的正则表达式:

我有数百行看起来像这样:

<a title="Match" href="http://mywebsite.com/category/Match"></a>

我需要在html标签之间插入标题词,如下所示:

<a title="Match" href="http://mywebsite.com/category/Match">Match</a>

这是我对它的微弱尝试(使用Notepad ++):

Find:
 title="([A-Za-z][A-Za-z0-9]*?)"([A-Za-z][A-Za-z0-9]*?)><

Replace:
 title="\1"\2>\1<

正如你所看到的,我真的很喜欢正则表达式:D

任何帮助将不胜感激!

编辑:

我应该澄清一下,这是在Notepad ++中使用查找和替换面板执行的一次性操作。

我还应该澄清,“匹配”这个词在每一行都会有所不同。

2 个答案:

答案 0 :(得分:1)

这适用于 Notepad ++ 6.3.2

查找内容:

(title\=")([^"]+)("[^>]+>)(<)

替换为:

\1\2\3\2\4

答案 1 :(得分:0)

使用捕获组和反向引用

您可以使用捕获组捕获匹配的部分内容,然后使用反向引用替换它们。具体语法可能因语言和实现而异。这是两个例子。

Ruby示例

str = %q{<a title="Match" href="http://mywebsite.com/category/Match"></a>}
str.sub /(Match)(">)</, "#{$1}#{$2}#{$1}<"
# => "<a title=\"Match\" href=\"http://mywebsite.com/category/Match\">Match</a>"

GNU sed示例

$ echo '<a title="Match" href="http://mywebsite.com/category/Match"></a>' |
    sed -r 's/(Match)(">)</\1\2\1</'
<a title="Match" href="http://mywebsite.com/category/Match">Match</a>