1

我似乎无法创建适用于这种情况的正则表达式:

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

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

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

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

这是我的微弱尝试(使用记事本++):

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

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

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

任何帮助,将不胜感激!

编辑:

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

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

4

2 回答 2

1

这适用于记事本++ 6.3.2

找什么 :

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

用。。。来代替 :

\1\2\3\2\4
于 2013-08-07T02:49:45.073 回答
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>"

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>
于 2013-08-07T02:47:44.147 回答