【发布时间】:2014-05-09 09:15:08
【问题描述】:
如何为 Vim 创建一个正则表达式,以匹配一行上的多个双引号字符串,而不匹配两个双引号字符串之间的文本?该模式的一个限制是双引号字符串不能包含单引号。到目前为止,我想出了/"\([^']\{-}\)"/ 来匹配下面的字符串。但正如您所见,它将匹配第二行字符串之间的文本。正如您在第三行中看到的那样,我不能依赖字符串周围的空白。当然,它也需要与第四行一起使用。
- “猫”被称为“foo”
- “猫”的名字是“foo”
- x="猫粮"
- x = "猫"
【问题讨论】:
-
对于正则表达式来说这将是一项棘手的任务,例如
"cat's" name is "foo"第二个"(在's之后)应该或不应该匹配?答案是否定的,我知道。因为cat's。但是" name is "很好……我想你明白我的意思了。 -
我不太明白你想要匹配的是什么。您能否为您的四个示例添加一个解释,说明您想要匹配该行的哪些部分?
-
谢谢。我想匹配示例中的所有双引号字符串,不包括包含单引号的字符串。所以我想要“cat”、“foo”、“foo”、“cat”而不是“cat's”或“cat's food”。
-
@kodnin 等等,如果字符串不包含单引号
',您只想匹配双引号 (") 或双引号及其包裹的字符串?你最好编辑你的问题,解释一下。例如line: xxx, what you want to get is yyyy请使用代码块。 -
@kent,基本上我想从双引号中检索内容。这样我可以用单引号替换它们。不用说,当里面有单引号的时候,我不想用双引号代替单引号。