最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

oeasy教您玩轉(zhuǎn)vim - 52 - # 正則查找

2021-10-03 07:31 作者:oeasy  | 我要投稿

查找細(xì)節(jié)

回憶上節(jié)課內(nèi)容??

  • 我們上次研究了文件讀寫(xiě)

  • 打開(kāi)是e,edit

    • :e oeasy.txt

    • :e .

  • 讀是:r,read

    • :1,3r o2z.txt 范圍讀

    • :4,9r !ls -lah 讀shell命令運(yùn)行結(jié)果

  • 寫(xiě)是:w,write

    • :w o3z.txt 直接寫(xiě)

    • :3,8w o3z.txt 范圍寫(xiě)

    • :w o3z.txt >> 追加寫(xiě)

    • :w! o3z 強(qiáng)制寫(xiě)

  • 命令行可以進(jìn)行批量替換么???

  • 我們先回憶一下搜索的細(xì)節(jié)

搜索文件

/正向

  • /oeasy 從上到下搜索 oeasy

    • hls讓搜索結(jié)果高亮

    • n保持正方向

    • N改變?yōu)榉捶较?/p>

  • 搜索到結(jié)尾之后可以用 wrapscan 從頭搜索

?正向

  • ?oeasy 從下到上搜索 oeasy

    • hls讓搜索結(jié)果高亮

    • n保持反方向

    • N改變反方向,改從正方向

  • 搜索到開(kāi)頭之后也可以用 wrapscan 從頭搜索

使用寄存器

  • 如果想在搜索或者命令行模式下使用寄存器中的內(nèi)容

  • 可以這樣ctrl+r然后指定寄存器

  • :ctrl+r*

  • 把剪貼板里面的內(nèi)容粘貼到:后面

  • :h c_ctrl-r

  • 查詢命令行模式下的ctrl+r

匹配模式

  • 除了完全匹配的單詞之外

  • 搜索也支持模式匹配 {pattern}

  • 什么模式匹配

  • :h pattern

動(dòng)手練習(xí)

  • :r !ls -lah

  • /shiyanlou

  • 修改大小寫(xiě)

  • 然后嘗試大小寫(xiě)的匹配

大寫(xiě)小寫(xiě)

  • 如果查找要忽略大小寫(xiě)的話

    • 就用ignorecase

    • :set ignorecase

    • 簡(jiǎn)寫(xiě)為:se ic

    • 取消為:se noic

  • ignorecase 可以和 smartcase 智慧大小寫(xiě)配合

    • /oeasy 忽略大小寫(xiě)

    • /Oeasy 必須完全符合

    • 如果搜索模式里面有大寫(xiě)字母就完全匹配

    • 如果沒(méi)有大寫(xiě)字母就忽略大小寫(xiě)

  • 還可以加開(kāi)關(guān)

    • /oeasy\c不區(qū)分大小寫(xiě)的oeasy

    • /oeasy\C區(qū)分大小寫(xiě)的oeasy

  • 具體可以:h ignorecase

  • 模式是什么意思?

字符重復(fù)*

  • 字符數(shù)量

    • *代表0到任意多個(gè)前字符

    • +代表1到任意多個(gè)前字符

    • ?代表0或1個(gè)前字符

  • /a*可以匹配

    • a

    • aa

    • aaa

    • `` 空串也可以匹配

  • /\(oe\)*可以匹配

    • oe

    • oeoe

    • oeoeoe

    • `` 空串也可以匹配

    • ()括號(hào)中的oe是一個(gè)可重復(fù)的原子

    • \(\)括號(hào)符前面加反斜杠轉(zhuǎn)義

字符重復(fù)+

  • + 對(duì)應(yīng) 1 到任意多個(gè)字符

  • /oe\+可以匹配

    • oe

    • oee

    • oeee

    • 不能匹配o

  • /\(oe\)\+ 可以匹配

    • oe

    • oeoe

字符重復(fù)=

  • = 對(duì)應(yīng) 0或1 次重復(fù)

字符重復(fù) \{3,5} 指定次數(shù)

  • * 對(duì)應(yīng) \{0,}

  • + 對(duì)應(yīng) \{1,}

  • = 對(duì)應(yīng) \{0,1}

并列關(guān)系

  • /oeasy\|o2z 匹配

    • oeasy 或者 o2z

  • /oeasy\|o2z\|o3z 匹配

    • oeasy 或者 o2z 或者 o3z

  • /\(ab\|cd\)\+匹配

    • abab 或者abcd 或者 cdab 或者 cdcd 或者 ababab..

字符范圍

  • /a\|b\|c\|d

  • 可以用 /[abcd] 來(lái)描述

  • 也可以用 /[a-d] 來(lái)描述

    • a-d 代表從 ad

  • [a-z] 代表任意小寫(xiě)字母

  • [A-Za-z] 代表任意字母

  • [0-9a-gz] 代表數(shù)字或a-g或z

特殊字符

  • 特殊字符也可以放到字符范圍里

排除字符^

  • \[^a]

    • ^ 在中括號(hào)內(nèi)部開(kāi)頭時(shí)

    • 代表排除 a 以外的所有字符

  • 在中括號(hào)內(nèi)部開(kāi)頭時(shí)

    • ^ 的意思是排除

  • 不在中括號(hào)內(nèi)部開(kāi)頭時(shí)

    • 表示行頭

    • /^dr 匹配行頭是 dr

預(yù)設(shè)字符范圍

  • 有一些字符范圍是很常用的

  • vim做些預(yù)設(shè)

  • 比如.代表任意字符

  • 能用字符預(yù)設(shè)就不用字符范圍

    • \d 數(shù)字

    • \D 非數(shù)字

    • \x 十六進(jìn)制數(shù)

    • \X 非十六進(jìn)制數(shù)

    • \s 空格和tab

    • \S 非空格和tab

    • \l 小寫(xiě)字母

    • \L 非小寫(xiě)字母

    • \u 大寫(xiě)字母

    • \U 非大寫(xiě)字母

  • 字符預(yù)設(shè)匹配的速度很快

  • 用了字符預(yù)設(shè)就不用[]了

    • /[\d\l]* 是不能用的

    • 可以用 /(\d\l)* 代替

練習(xí)

  • 上述三個(gè)表達(dá)式是相同的

  • 盡量選第二種表示方法

  • 絕對(duì)要避免第三種表示方法

  • 因?yàn)槟翘?/p>

匹配換行

  • /one\ntwo可以匹配換行

    • s\nd 可以匹配上一行以s結(jié)尾,本行以d開(kāi)頭

  • /one\_stwo可以匹配換行也可以匹配空格one two

    • \s是空格

    • \_s是空格或者換行

  • 前面加上\_就是給字符或上換行符

    • \_.匹配包括換行符的任意字符

  • /"\_[^"]*"

    • 被引號(hào)包裹起來(lái)的

    • 任意多個(gè)除了引號(hào)外的包括換行符的所有字符

    • [^"] 除了引號(hào)外的所有字符不包括換行符

    • \_[^"] 除了引號(hào)外的所有字符也包括換行符

    • \_[^"]* 任意多個(gè)除了引號(hào)外的所有字符也包括換行符

    • /"\_[^"]*"

  • 這樣就可以匹配帶換行的字符串了

  • 動(dòng)手試一試

貪婪匹配

  • 默認(rèn) * 的匹配是貪婪的

    • 找行內(nèi)最大范圍內(nèi)的匹配

    • 注意這把連個(gè) markdown 的加粗標(biāo)記連在一起了

  • \*\*.*\*\*

    • \*\*代表前兩個(gè)星號(hào)

    • . 的數(shù)量是 *

    • \*\* 代表后兩個(gè)星號(hào)

非貪婪匹配

  • 還有一種非貪婪匹配

    • 他是非貪婪的

    • 只找最小范圍內(nèi)的匹配

    • 注意他把這兩個(gè)分開(kāi)了

  • \*\*.\{-}\*\*

    • \*\* 代表前兩個(gè)星號(hào)

    • .的數(shù)量是 \{-}

    • \*\* 代表后兩個(gè)星號(hào)

  • . 的數(shù)量是 \{-}

正則表達(dá)

  • 行頭行尾

    • ^意味著行開(kāi)頭

    • $意味著行結(jié)尾

  • 詞頭詞尾

    • \<意味著單詞開(kāi)頭

    • \>意味著單詞結(jié)尾

  • /^a[a-z]*d$

    • a開(kāi)頭

    • d結(jié)尾

    • 中間有任意多個(gè)小寫(xiě)字母

c語(yǔ)言標(biāo)識(shí)符

  • \h 意味著 [A-Za-z_]

    • 大小寫(xiě)字母和下劃線

  • \w 意味著 [0-9A-Za-z_]

    • 大小寫(xiě)字母和下劃線和數(shù)字

  • /\<\h\w*\>

    • 以字母或下劃線開(kāi)頭

    • 后跟字母下劃線或數(shù)字

    • 這是c語(yǔ)言標(biāo)識(shí)符的語(yǔ)法規(guī)則

不以什么為開(kāi)頭

  • /\(o\)\@<!easy

    • aeasy 中的 easy 可以匹配

    • beasy 中的 easy也可以匹配

    • easy 還可以匹配

    • 就是不匹配oeasy 中的 easy

    • 但是匹配oeasy中的easy

  • 加上詞頭詞尾

    • /.<\(o\)\@<!easy\>

    • aeasy、beasy都可以匹配

    • easy也可以匹配

    • 就是不匹配oeasy

不以什么為結(jié)尾

  • oea\(sy\)\@!

    • oeasx 中的 oea 可以匹配

    • oeasz 中的 oea 也可以匹配

    • oea 也都可以匹配

    • 就連 oeas 中的 oea 也都可以匹配

    • 就是不匹配oeasy 中的 oea

  • 加上詞頭詞尾

    • /oea\(sy\)\@!..\>

    • oeasx 匹配

    • oeasz 匹配

    • oeasy 不匹配

總結(jié)

  • 我們溫習(xí)了關(guān)于搜索的相關(guān)內(nèi)容

    • 是否忽略大寫(xiě)小寫(xiě)

    • 是否從頭開(kāi)始查找

    • 是否高亮顯示

    • /正向,?反向

    • n保持方向,N改變方向

    • 可以設(shè)置

  • 還有一些正則表達(dá)式的使用方法

    • 行頭行尾 ^$

    • 詞頭詞尾 \<\>

    • 字符列表[a-z]、[A-Za-z_]

    • 包含回車(chē)one\_stwo

  • 數(shù)量

    • 數(shù)量*、?=

    • 具體數(shù)量 \{1,3}

    • 非貪婪 \{-}

  • 不以什么為開(kāi)頭結(jié)尾

    • 不以什么為開(kāi)頭 \@<!

    • 不以什么為結(jié)尾 \@!

  • 查找出來(lái)怎么替換呢???

  • 下次再說(shuō) *
    [Github地址] (https://github.com/overmind1980/oeasyvim)
    [Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
    [藍(lán)橋?qū)嶒?yàn)樓 邀請(qǐng)碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)


oeasy教您玩轉(zhuǎn)vim - 52 - # 正則查找的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
驻马店市| 嘉荫县| 二连浩特市| 金秀| 平谷区| 镇沅| 岗巴县| 南召县| 旬邑县| 建宁县| 崇左市| 达孜县| 青海省| 福州市| 长垣县| 临沂市| 上饶市| 南昌市| 乌鲁木齐县| 金湖县| 永康市| 巢湖市| 兰溪市| 永济市| 安乡县| 上虞市| 布拖县| 周口市| 翁牛特旗| 新巴尔虎左旗| 渭南市| 承德县| 常州市| 马关县| 永新县| 凉城县| 印江| 华亭县| 扎囊县| 桦南县| 六安市|