正則表示式 進階(二)-- 回溯引用、前後查詢、嵌入條件
阿新 • • 發佈:2019-01-26
回溯引用是指模式的後半部分引用在前半部分中定義的子表示式
回溯引用只能用來引用模式裡的子表示式
下面是一個回溯引用的例子
只能匹配H1 第8行是不合法的 第8行被成功的排除掉了。
\1 \2 代表模式裡的第1 2個子表示式,依次類推, \3代表第3個
在替換模式裡,根據不同語言的實現不同,可能\ 需要換成 $ ,但在vim中好像不需要
執行替換操作後,如下,\ 轉成 $ 就完蛋了
下面是正確的執行結果:
用來進行大小寫轉換的元字元 \E 結束\L和\U轉換 \L 把\L和\E之間的字元轉換為小寫 \U 把\L和\E之間的字元轉換為大寫 \l 把下一個字元轉換為小寫 \u 把下一個字元轉換為大寫 \u \l 只能把下一個字元(或子表示式)轉換為大寫 或 小寫 \U \L 可以把後面的所有字元轉換為大寫或小寫,直到遇到 \E 為止
執行替換操作後
試了一下,發現vim不支援這個東西,又鬱悶了,下面用個notepad++來掩飾吧
注意上面的匹配結果,前一個沒有使用?=來向前引用,":"也在匹配文字中,而右邊的這個就沒有。
向後查詢:?<=
?<=和?=的用法基本相同:必須用在一個子表示式裡面,而且後跟要匹配的文字。
現在我們想把"$"從匹配結果中去掉,這個怎麼辦呢?
只能匹配H1 第8行是不合法的 第8行被成功的排除掉了。
\1 \2 代表模式裡的第1 2個子表示式,依次類推, \3代表第3個
在替換模式裡,根據不同語言的實現不同,可能\ 需要換成 $ ,但在vim中好像不需要
執行替換操作後,如下,\ 轉成 $ 就完蛋了
下面是正確的執行結果:
用來進行大小寫轉換的元字元 \E 結束\L和\U轉換 \L 把\L和\E之間的字元轉換為小寫 \U 把\L和\E之間的字元轉換為大寫 \l 把下一個字元轉換為小寫 \u 把下一個字元轉換為大寫 \u \l 只能把下一個字元(或子表示式)轉換為大寫 或 小寫 \U \L 可以把後面的所有字元轉換為大寫或小寫,直到遇到 \E 為止