Notepad ++ - 使用正则表达式将链接html添加到每行的开头/结尾

时间:2012-12-02 21:11:52

标签: regex notepad++

我对RegEx并不像我想的那样舒服。我要做的是在<a href="前面添加每一行(网址列表),然后用"></a>

结束每一行

对于前置,我一直在使用替换正则表达式:^ <a href="

这项工作正常,但是,某些空白行会添加<a href="。只有当行中有超过1个字符时才可以替换每行的开头吗?

至于做到最后,我不知道。任何帮助都将非常感激 - 我在不同的文本文件中有非常大量的URL来进行编辑。

2 个答案:

答案 0 :(得分:2)

通过^(?=.)(?<=.)$进行搜索和替换。这段时期意味着“任何角色,不包括换行符”。结合^$,它将是一个字符的开头和结尾,后面跟着(或者在$}的情况下)。这个例子将它与积极的前瞻和后瞻相结合,以确保你不会替换任何原始行,而是替换/替换。

答案 1 :(得分:1)

您可以使用否定前瞻(至少如果您升级到Notepad ++ 6)。

Find what: ^(?!$)

对于行结尾:

Find what: (?!^)$

以第一个为例,它匹配行的开头(^),但仅当$在该位置不匹配时 - 即如果它不是一行结束于同时。

另一种方法是在一次替换中进行替换(以及断言):

Find what: ^.+$
Replacement: <a href="$0"></a>

事实上,你甚至可以省略锚点,由于+的贪婪,模式总是消耗整行(但只有当至少有一个字符时):

Find what: .+
Replacement: <a href="$0"></a>

请注意,其中任何一个都会将您的锚点包裹在仅包含空格和制表符的行周围。避免这种情况的最好方法是修改第三种模式:

Find what: ^[ \t]*\S[^\r\n]*
Replacement: <a href="$0"></a>

从一行的开头开始,我们使用所有空格和制表符(没有换行符)。然后我们需要一个非空格字符(\S)。然后我们消耗尽可能多的非换行符。由于贪婪,再次不需要$锚。