我的目标是使正则表达式匹配所有内容 来自原始正则表达式的多行匹配。
这是我试图反转的正则表达式:
\vselect\_.{-};
它在波纹管示例代码上正确匹配。
包含sql语句,而不是大写文本。
THIS TEXT IS WHAT I WANT TO
MATCH ONCE THE ABOVE
REGEX IS CORRECTLY INVERTED.
select *
from foo
where bar;
THIS TEXT IS WHAT I WANT TO
MATCH ONCE THE ABOVE
REGEX IS CORRECTLY INVERTED.
select *
from bar
where foo;
THIS TEXT IS WHAT I WANT TO
MATCH ONCE THE ABOVE
REGEX IS CORRECTLY INVERTED.
关于如何做的vim文档 反转(否定)一个正则表达式,这就是我想出的:
\v^(select\_.{-};)@!.*
这个正则表达式匹配除了第一行之外的所有内容 来自sql语句。我想要的所有线路 要排除的sql语句,而不仅仅是第一行。
我也尝试过不使用\v
魔法指令
逃过一切,但没有运气,得到了同样的结果。
我做错了什么?
此外,如果任何人都能想到另一种方式来实现我想要做的事情会很棒,那么答案就不必遵循我尝试的方式。
答案 0 :(得分:2)
经过深思熟虑后,我想我得到了你的意思......
这一行应该适合你:
\v;\n\n\zs\_.{-}\ze\n\_^select
如果你有前导/结束TEXT块,这个vimregex可以工作:
\v(;\n\n\zs\_.{-}|%^(select)@!\_.{-})\ze(\n\_^select|\n?%$)