0

我对 RegEx 并不满意。我想要做的是在每一行(URL列表的)前面加上<a href=",然后在每一行结束"></a>

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

这没问题,但是,有一些空白行会被<a href="添加到其中。仅当行中的字符超过 1 个时,是否可以替换每行的开头?

至于做线的尽头,我不知道。任何帮助将不胜感激——我在不同的文本文件中有大量的 url 可供编辑。

4

2 回答 2

2

搜索并替换为^(?=.)and (?<=.)$。句点意味着“任何字符,不包括换行符”。与^and结合$,它将是一行的开始和结束,后面跟着一个字符(或在 的情况下在前面$)一个字符。此示例将其与正向前瞻和后向相结合,以确保您不会替换任何原始行,而是追加/前置。

于 2012-12-02T21:15:18.113 回答
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)。然后我们尽可能多地使用非换行符。由于贪婪,不再需要$锚。

于 2012-12-02T21:21:02.520 回答