我对RegEx并不像我想的那样舒服。我要做的是在<a href="
前面添加每一行(网址列表),然后用"></a>
对于前置,我一直在使用替换正则表达式:^ <a href="
这项工作正常,但是,某些空白行会添加<a href="
。只有当行中有超过1个字符时才可以替换每行的开头吗?
至于做到最后,我不知道。任何帮助都将非常感激 - 我在不同的文本文件中有非常大量的URL来进行编辑。
答案 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
)。然后我们消耗尽可能多的非换行符。由于贪婪,再次不需要$
锚。