我似乎无法创建一个在这种情况下可以工作的正则表达式:
我有数百行看起来像这样:
<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 ++中使用查找和替换面板执行的一次性操作。
我还应该澄清,“匹配”这个词在每一行都会有所不同。
答案 0 :(得分:1)
这适用于 Notepad ++ 6.3.2
查找内容:
(title\=")([^"]+)("[^>]+>)(<)
替换为:
\1\2\3\2\4
答案 1 :(得分:0)
您可以使用捕获组捕获匹配的部分内容,然后使用反向引用替换它们。具体语法可能因语言和实现而异。这是两个例子。
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>"
$ 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>