1. 程式人生 > >正則表示式 進階(二)-- 回溯引用、前後查詢、嵌入條件

正則表示式 進階(二)-- 回溯引用、前後查詢、嵌入條件

回溯引用是指模式的後半部分引用在前半部分中定義的子表示式 回溯引用只能用來引用模式裡的子表示式 下面是一個回溯引用的例子    
只能匹配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 為止
執行替換操作後

2. 前後查詢

首先我們對這個概念進行下解釋, 教科書版本:“對某一位置的前後內容進行查詢” 示例版本: <Title>this is a title</Title> 通過正則去匹配出Title,那麼匹配的字串除了"this is a title"這幾個字元,還有前面和後面的<Title> </Title>,這個時候,如果我們只想要"this is a title"這幾個字元,那麼我們需要的就是”前後查詢“了。 從語法上看,一個向前查詢模式其實就是一個以?=開頭的子表示式,需要匹配的文字跟在=的後面,但是不出現在匹配結果中。 向前查詢字元:?=
試了一下,發現vim不支援這個東西,又鬱悶了,下面用個notepad++來掩飾吧      注意上面的匹配結果,前一個沒有使用?=來向前引用,":"也在匹配文字中,而右邊的這個就沒有。 向後查詢:?<= ?<=和?=的用法基本相同:必須用在一個子表示式裡面,而且後跟要匹配的文字。   現在我們想把"$"從匹配結果中去掉,這個怎麼辦呢?