Regex 正则表达式在vi中搜索包含字符串但不以Q结尾的行

Regex 正则表达式在vi中搜索包含字符串但不以Q结尾的行,regex,match,Regex,Match,使用vi,我想匹配一个字符串,但前提是行没有以字母结尾,比如Q 例如,如果文件是: myQ my 我想匹配第一行,但不是第二行 从阅读相关文章来看,look aheads似乎应该有效: /[?=my][?!Q] 应该只找到第二行 但是它会找到第一个。我会选择以下内容 /^.\+[^Q]$^/ 我同意下面的观点 /^.\+[^Q]$^/ Vim有一个不同于Perl的正则表达式语法,但我们不需要零宽度匹配 /my\(.*[^Q]\|\)$ Vim有一个不同于Perl的正则表达式语法,但我们

使用vi,我想匹配一个字符串,但前提是行没有以字母结尾,比如Q

例如,如果文件是:

myQ
my
我想匹配第一行,但不是第二行

从阅读相关文章来看,look aheads似乎应该有效:

/[?=my][?!Q]
应该只找到第二行
但是它会找到第一个。

我会选择以下内容

/^.\+[^Q]$^/

我同意下面的观点

/^.\+[^Q]$^/

Vim有一个不同于Perl的正则表达式语法,但我们不需要零宽度匹配

/my\(.*[^Q]\|\)$

Vim有一个不同于Perl的正则表达式语法,但我们不需要零宽度匹配

/my\(.*[^Q]\|\)$

/^.\+[^Q]$/
应执行以下操作:trick@MichaelWild:这应该是一个答案:)@TAMER先生这个问题太简单了;-)<代码>/^.\+[^Q]$/应执行以下操作trick@MichaelWild:这应该是一个答案:)@TAMER先生这个问题太简单了;-)+运算符前面缺少一个反斜杠,否则vim会将其解释为文字+(除非您修改神奇的属性)。但我无法修复它,因为愚蠢的苏希望编辑长度至少为六个字符!不要怪我,怪我没有重读我的答案;-)谢谢似乎无法使编辑框接受换行,很抱歉无法阅读此文章。非常感谢各位的回复。我曾试图将我的问题简化为它的本质,但显然我太努力了。假设我的文本是CR my CR myQ CR your CR yourQ,那么根据MrTAMER所说的,我希望/^my.\+[Q^]$/只找到第一行,但它什么也找不到。Thomas的建议也让我感到困惑,首先是因为+之前的反斜杠现在已经存在,其次是因为我不理解Michael的建议和Thomas的建议之间的区别,+运算符前面缺少一个反斜杠,否则vim会将其解释为文字+(除非修改神奇性)。但我无法修复它,因为愚蠢的苏希望编辑长度至少为六个字符!不要怪我,怪我没有重读我的答案;-)谢谢似乎无法使编辑框接受换行,很抱歉无法阅读此文章。非常感谢各位的回复。我曾试图将我的问题简化为它的本质,但显然我太努力了。假设我的文本是CR my CR myQ CR your CR yourQ,那么根据MrTAMER所说的,我希望/^my.\+[Q^]$/只找到第一行,但它什么也找不到。我也对托马斯的建议感到困惑,首先是因为+之前的反斜杠现在已经存在,其次是因为我不理解迈克尔的建议和托马斯的建议之间的区别