簡體   English   中英

正則表達式可以匹配VIM中的任何字符串,多個字符串,包括換行符的非貪婪字符串

[英]Regex to match anything, string, multiple,strings including newline non greedy in VIM

我想在其中替換小寫的字符串:

SELECT lower1, lower2, lower3 FROM lower4, lower5 WHERE

我使用vim replace將此正則表達式替換為大寫:

:%s/select\\_.*\\from\\_.*\\where/\\U&/gic

當存在其他選擇查詢時,正則表達式select\\_.*\\from\\_.*\\where不好:

例如,它選擇此查詢中的所有內容並影響不能大寫的字符串

SELECT lower1, lower2, lower3 FROM lower4, lower5 WHERE lower1=cannot_be_uppercased
UNION all
SELECT lower1, lower2, lower3 FROM lower6, lower7 WHERE lower1=cannot_be_uppercased

Vim里正則表達式非貪婪模式。 代替使用* ,使用\\{-}

我想,正則表達式select\\_.\\{-}from\\_.\\{-}where

這是一些文檔。

:h non-greedy

                            *non-greedy*
If a "-" appears immediately after the "{", then a shortest match
first algorithm is used (see example below).  In particular, "\{-}" is
the same as "*" but uses the shortest match first algorithm.  BUT: A
match that starts earlier is preferred over a shorter match: "a\{-}b"
matches "aaab" in "xaaab".

Example         matches ~
ab\{2,3}c       "abbc" or "abbbc"
a\{5}           "aaaaa"
ab\{2,}c        "abbc", "abbbc", "abbbbc", etc.
ab\{,3}c        "ac", "abc", "abbc" or "abbbc"
a[bc]\{3}d      "abbbd", "abbcd", "acbcd", "acccd", etc.
a\(bc\)\{1,2}d      "abcd" or "abcbcd"
a[bc]\{-}[cd]       "abc" in "abcd"
a[bc]*[cd]      "abcd" in "abcd"

The } may optionally be preceded with a backslash: \{n,m\}.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM