我对 RegEx 并不满意。我想要做的是在每一行(URL列表的)前面加上<a href="
,然后在每一行结束"></a>
对于前置,我一直在使用正则表达式替换:^ with<a href="
这没问题,但是,有一些空白行会被<a href="
添加到其中。仅当行中的字符超过 1 个时,是否可以替换每行的开头?
至于做线的尽头,我不知道。任何帮助将不胜感激——我在不同的文本文件中有大量的 url 可供编辑。
搜索并替换为^(?=.)
and (?<=.)$
。句点意味着“任何字符,不包括换行符”。与^
and结合$
,它将是一行的开始和结束,后面跟着一个字符(或在 的情况下在前面$
)一个字符。此示例将其与正向前瞻和后向相结合,以确保您不会替换任何原始行,而是追加/前置。
您可以使用负前瞻(至少在升级到 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
)。然后我们尽可能多地使用非换行符。由于贪婪,不再需要$
锚。