Sublime似乎认为\Z
匹配文件的实际结尾,
和每个\n
导致它。
这是Sublime中的一个错误吗
(意思是,Sublime或它正在使用的东西),
或者是正确的行为
而我只是对 应该如何工作感到困惑?
这是一个简化的具体演示:
这是搜索替换:
Find What:\Z
Replace With:y
以下是4个例子:
- the original file contents
- the actual result
- my expected result
最后\n
:0 (按我的预期工作。)
原:
x0 x x x
实际:
x0 x x xy
预期:
x0 x x xy
((
Stackexchange格式化在这里混乱,
并开始忽略#.*
行,
而且我不知道如何解决它,
但pre
- 标签内容仍然正常
修改
帖子本身的实际格式有效,
但是格式在帖子的预览中显示出来(显示在编辑框下方)。
))
\n
:1 原:
x1 x x x
实际:
x1 x x xy y
预期:
x1 x x x y最后
\n
:2 原:
x2 x x x
实际:
x2 x x xy y y
预期:
x2 x x x y
\n
在最后:3 原:
x3 x x x
实际:
x3 x x xy y y y
预期:
x3 x x x y
答案 0 :(得分:2)
首先,值得注意的是Sublime Text在搜索和替换功能中使用Boost正则表达式引擎。
为了获得您期望的行为,您需要使用匹配字符串/文档末尾的\z
锚点。
\Z
可以在最后的可选新行数之前匹配,请参阅this Boost regex reference:
\z
仅在缓冲区末尾匹配(与\\'
相同)。
\Z
匹配一个零宽度断言,该断言由缓冲区末尾的可选新行序列组成:等同于正则表达式(?=\v*\z)
。 请注意,这与Perl略有不同,Perl的行为就像匹配(?=\n?\z)
一样。
所以,这不是错误,它是\Z
锚点的预期行为。