gpt4 book ai didi

regex - Vim 正则表达式不匹配字符类中的空格

转载 作者:行者123 更新时间:2023-12-04 16:35:17 27 4
gpt4 key购买 nike

我正在使用 vim 进行搜索并替换为以下命令:
%s/lambda\s*{\([\n\s\S]\)*//gc
我正在尝试匹配 { 之后的所有单词、结束行和空白字符.例如,这一行的全部内容应该匹配:

    lambda {
FactoryGirl.create ...

相反,它只匹配换行符, FactoryGirl 之前没有空格。 .我之前尝试过手动替换所有空格,以防万一有制表符,但没有骰子。谁能解释为什么这不起作用?

最佳答案

\s是空白的原子; \n ,虽然它看起来很相似,但在语法上是换行符的转义序列。集合原子内部 [...] ,您不能包含其他原子,只能包含字符(包括一些特殊的,如 \n 。来自 :help /[] :

  • The following translations are accepted when the 'l' flag is not included in 'cpoptions' {not in Vi}:

\e  <Esc>
\t <Tab>
\r <CR> (NOT end-of-line!)
\b <BS>
\n line break, see above |/[\n]|
\d123 decimal number of character
\o40 octal number of character up to 0377
\x20 hexadecimal number of character up to 0xff
\u20AC hex. number of multibyte character up to 0xffff
\U1234 hex. number of multibyte character up to 0xffffffff

NOTE: The other backslash codes mentioned above do not work inside []!



因此,要么按字面意思指定空白字符 [ \t\n...] ,使用对应的字符类表达式 [[:space:]...] ,或通过逻辑或 \%(\s\|[...]\) 将原子与集合结合起来.

关于regex - Vim 正则表达式不匹配字符类中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12271224/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com