[英]Regex: Match any character (including whitespace) except a comma
我想将除逗号以外的任何字符和任何空白与正则表达式匹配。 仅匹配除逗号以外的任何字符都会给我:
[^,]*
但我也想在字符串中的任何位置匹配任何空格字符,制表符,空格,换行符等。
编辑:
通过:%s / foo / bar / gc在vim中使用sed。
在以下示例中,我想查找从func到逗号的所有内容:
func("bla bla bla"
"asdfasdfasdfasdfasdfasdf"
"asdfasdfasdf", "more strings")
一世
要使用RegEx
在SED
使用multiline
,应在此处查看 。
编辑:
在SED
命令中,使用NewLine有点不同。 SED
命令支持三种模式来管理多行操作N
, P
和D
要了解其工作原理,请参见此说明 (使用多行)。 这里讨论这三个操作。
我的猜测是N
运算符是这里缺少的考虑领域。 加N
运算符将允许在字符串中感测\\n
。
来自这里的一个例子:
有时,人们希望在sed脚本中使用换行符。 好吧,这里有一些微妙的问题。 如果要搜索新行,则必须使用“ \\ n”。 这是一个示例,其中搜索一个短语,然后删除该短语之后的换行符-将两行连接在一起。
(echo a; echo x; echo y)| sed'/ x $ / {N s:x \\ n:x:}'
产生
XY
但是,如果要插入新行,请不要使用“ \\ n”-而是插入文字换行符:
(echo a; echo x; echo y)| sed's:x:X \\:'
产生
X
ÿ
因此,基本上,您正在尝试在多行上匹配一个模式。
这是在sed
执行此操作的一种方法(虽然很确定它们在vim
中不可用,但我不知道如何在vim
复制它)
sed '
/func/{
:loop
/,/! {N; b loop}
s/[^,]*/func("ok"/
}
' inputfile
比方说, inputfile
包含这些行
func("bla bla bla"
"asdfasdfasdfasdfasdfasdf"
"asdfasdfasdf", "more strings")
输出是
func("ok", "more strings")
func
,请输入大括号。 :loop
是一个名为loop
的标签 ,
(这就是/,/!
意思)
N
) loop
标签( b loop
) ,
然后运行s
命令,该命令将第一个逗号之前的所有字符与(多行)模式空间进行匹配,并执行替换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.