ELisp編程十一:Regex一

來源:互聯網
上載者:User

互動式編寫Regex


比如buffer中有一個字串


abcd 3


運行命令:


M-x:re-builder


會出現一個小buffer,在雙引號裡面輸入Regexd ,上面有字串的buffer馬上高亮d字元,如果輸入3,則高亮3字元。



特殊字元


參考文檔:http://www.gnu.org/software/emacs/manual/html_node/elisp/Regexp-Special.html#Regexp-Special


'.' 代表任意一個字元(除了分行符號),因此"a.c"能夠匹配abcd 3中的abc


'*' 代表前面的字元(串)可以重複>=0次


比如"e*"在re-builder中也能匹配abcd 3,其實這容易引起混亂,一般不要這樣使用。


而且如果多個字元後面跟*的話,只要能匹配一個字元都算,這個玩意兒真不知道用在何處,感覺就是怎麼都匹配。


建議盡量不要用這個。


如果*用在最前面,只能代表是一般字元,同樣情況適用於+和?,一句話,特殊字元如果用在不可能出現的場合,只能被當作一般字元。


'+' 代表前面的字元(串)必須出現至少一次


比如"bc+d"匹配上面的字串abcd 3


'?' 代表前面的字元(串)出現一次或者0次


'^' 匹配字串開頭


'&' 匹配字串結尾


[...] 裡面可以包括若干字元,只要匹配其中之一即可


比如字串abcd  3 ab


用正則"[bc]",匹配到三個,分別是b c 和最後一個b


[^...] 表示不能是[]裡麵包含的任何字元


\ 代表後面的特殊字元在這裡只是一般字元


注意,如果要匹配字串中的\字元,需要四個\,比如:abcd  3 ab\ ef


Regex寫法:"\\\\"


首先因為ELisp字串寫法中,雙引號裡面的\不顯示,要想顯示出來必須是兩個\


然後Regex文法中\是特殊字元,\\才能表示一個\,


因此"\\\\"就是代表邏輯上的Regex"\\",因此也就匹配了字元\


'*?' '+?' '??' 和'*' '+' '?' 功能相近,只是非貪婪匹配,只匹配最合適的一個。





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.