我想找到两个字符之间的所有内容,比如A
和B
:
Asd;lfksjd;fsdfjs;ldfkB
这将是sd;lfksjd;fsdfjs;ldfk
并替换它们。我该如何写这个表达式?
答案1
您可以使用以下正则表达式匹配 A 和 B 之间的任意字符:
(?<=A).*(?=B)
这不会返回 A 或 B 作为匹配字符的一部分。
(?<=A)
意味着 A 位于主表达式之前,并且如果它匹配,则您不希望它包含在主结果中。.*
表示匹配出现 0 次或更多次的任何字符。如果您希望 A 和 B 之间至少有一个字符,则可以使用 .+。(?=B)
意味着 B 位于主表达式之后,并且如果它匹配,则您不希望它包含在主结果中。
编辑:
Notepad++ 不支持向前/向后追溯,因此你可以替换
(A).*(B)
和
\1\2
反而。
请注意,这是贪婪的,因此如果有“AxB y AzB”,您将获得“AB”。要获取“AB y AB”,请使用
(A).*?(B)
反而。
*编辑非贪婪,.?*
不正确
答案2
我对正则表达式很陌生,所以希望这对你有用。
我认为A.*B是要搜索的正则表达式。也就是说,搜索 A 和 B 之间是否有零个或多个东西。
此正则表达式在匹配中包含 A 和 B,因此您必须使用替换将它们添加回来。
替代B将是用来替换它的文本。