ruby基礎教程 programming 第四版
這本書的第十六章正規表示式類中有乙個例子讓人不是那麼容易理解。特此分享一下我的理解。
16.5 捕獲
/(.)(\d\d)+(.)/ =~ "123456"
p $1 #=>1
p $2 #=>45
p $3 #=>6
此例子中的p $2 #=>45結果讓人有點難以理解,因為大家都會認為結果應該是23才對,其實不然。經過試驗,書本並沒有出錯。正確的理解應該是+號代表重複一次以上,而$2捕獲的規則就是捕獲最後一次重複的結果,這是人家的規則,並無什麼道理可言。以下有乙個例子可以用於參考驗證。
/(.)(\d\d)+?(.)/ =~ "123456"
p $1 #=>1
p $2 #=>23
p $3 #=>4
+?代表1次以上的重複中最短的部分,所以$2捕獲的就只有一次,結果就如上圖了。
乙個例子學會正規表示式
文章以oc為例,正規表示式不分語言,文章中的規則在別的語言也是通用的。最近有個需求是在字串中匹配出特殊的字串,格式是暱稱 我寫出來的正則如下 nsstring regex 一步一步分析,前半段格式是固定的為 在ios裡需要轉義,所以多乙個 這樣,同理也就寫出了user id限制是32位 然後是暱稱,...
乙個正規表示式的例子
需求 通過.net的正則 上面3個都得到 aa 並對語句稍微講解一下。謝謝。http w 這個是我寫的。不知道怎麼加上或者匹配www 還有?這個什麼意思查不到。解決 i 匹配模式,表示忽略大小寫,在.net中等價於在後面加regexoptions.ignorecase引數 http www 肯定逆序...
ruby正規表示式
ruby用 將正規表示式括起來。表示開頭,表示結尾,表示0個以上的任意字元。現在就講講正規表示式的規則的寫法。正規表示式中有很多上述的具有特別意義的字元。首先是下列字元。範圍描述符。a z 表示從a到z之間的任意乙個。w 英文本母和數字。即 0 9 a z a z w 非英文本母和數字 s 空字元,...