Regex——字元組運算

來源:互聯網
上載者:User

標籤:regex   集合運算   邏輯   字母   數字   語言   div   false   功能   

以上介紹了字元組的準系統,它們在常用的語言中都有提供;還有些語言中為字元組提供了更強大的功能,比如Java和.NET就提供了字元組運算的功能,可以在字元組內進行集合運算,在某些情況下這種功能非常實用。

如果要匹配所有的母音字母(為講解簡單考慮,暫時只考慮小寫字母的情況),可以用[aeiou],但是要匹配所有的輔音字母卻沒有什麼方便的辦法,最直接的寫法是[b-df-hj-np-tv-z],不但煩瑣,而且難理解。其實,從26個字母中"減去"母音字母,剩下的就是輔音字母,如果有辦法做這個"減法",就方便多了。

Java語言中提供了這樣的字元組:[[a-z]&&[^aeiou]],雖然初看有點古怪,但仔細看看,也不難理解。[a-z]表示26個英文字母,[^aeiou]表示除母音字母之外的所有字元(還包括大寫字母、數字和各種符號),兩者取交集,就得到"26個英文字母中,除去5個母音字母,剩下的21個輔音字母"。

.NET中也有這樣的功能,只是寫法不一樣。同樣是匹配輔音字母的字元組,.NET中寫作[a-z-[aeiou]],其邏輯是:從[a-z]能匹配的26個字元中,"減去"[aeiou]能匹配的母音字母。相對於Java,這種邏輯更符合直覺,但寫法卻有點古怪--不是[[a-z]-[aeiou]],而是[a-z-[aeiou]]。例1-20集中示範了Java和.NET中的字元組運算。

例1-20  字元組運算

// Java  "a".matches("^[[a-z]&&[^aeiou]]$");     //  => True  "b".matches("^[[a-z]&&[^aeiou]]$");     //  => False  // .NET  Regex.IsMatch("^[a-z-[aeiou]]$", "a");  //  => True  Regex.IsMatch("^[a-z-[aeiou]]$", "b");  //  => False  

 

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.