這次帶給大家正規怎麼寫才能匹配一組字符,正則匹配一組字符的注意事項有哪些,下面就是實戰案例,一起來看一下。
本文實例講述了正規表示式教程之匹配一組字元的方法。分享給大家供大家參考,具體如下:
註:在所有例子中正規表示式匹配結果包含在源文本中的【和】之間,有的例子會使用Java來實現,如果是java本身正規表示式的用法,會在對應的地方說明。所有java例子都在JDK1.6.0_13下測試通過。
一、匹配多個字元中的某一個
在上一篇《正規表示式教程之匹配單一字元詳解》中的一個匹配以na或sa開頭的文字檔案範例中,使用的正規表示式是.a.\.txt。如果還有一個檔案是cal.txt,那麼也會被配對到。如果只想要匹配na或sa開頭的文件,該怎麼辦?
既然只想找出n或s,使用可以匹配任何字元的.顯然是不行的。在正規表示式中,我們可以使用[和]來定義一個字元集合,在使用[和]來定義的字元集合裡,這兩個元字元之間的所有字元都是該集合的組成部分,字元集合的匹配結果是能夠與該集合裡的任何一個成員相符的的文字。
來看一個和上一個相似一個範例:
文字:
#sales.txt
##na1 .txt
na2.txt
sa1.txt
sanatxt.txt
##cal.txt
正規表示式:[ns]a.\.txt
結果:
sales.txt
【na1.txt】
【na2.txt】
【sa1.txt】
sanatxt.txt
#cal.txt
分析:這裡使用的正規表示式是以[na]開頭,這個集合將匹配字元n或s,不會匹配其他任何字元。 [和]不匹配任何字符,它們只負責定義一個字符集合。接下來a符合一個字元a,\.將符合一個.字元本身,txt符合txt字元本身,符合結果與我們預期的一致。 但是,如果檔案中如果有一個檔案是usa1.txt,那麼它也會被配對出來。這是位置匹配的問題,在後面將會討論到。二、使用字元集合區間
在上面的範例中,如果我們只想匹配以na或sa開頭,後面跟一個數字的檔案怎麼辦?正規表示式[ns]a.\.txt中,.將會匹配到任一個字符,包括數字。這個問題可以使用字元集合來解決:sales.txt
na1.txt
##na2. txtsa1.txt
san.txt
sanatxt.txt
cal.txt
正規表示式:
[ns]a[0123456789]\.txt結果:
sales.txt【na1.txt】
【na2.txt】
【sa1.txt】
san.txt
# sanatxt.txt cal.txt 分析:從結果可以看到,我們只匹配出來以na或sa開頭,後面跟一個數字的文件,而san.txt沒有被匹配出來,因為使用了字元集合[0123456789]來限定第三個字元只能是數字。 在正規表示式中,會很頻繁的使用到一些字元區間,例如0-9,a-z等等,為了簡化字元區間的定義,正規表示式提供了一個特殊的元字元-來定義字元區間。像上面這個例子,我們可以使用正規表示式來匹配:[ns]a[0-9]\.txt,結果與上面完全一樣。 字元區間不限於數字,像下面這些都是合法的字元區間: [A-F]:符合從A到F的所有大寫字母。 [A-Z]:符合從A到Z的所有大寫字母。 [A-z]:符合從ASCII字元A到ASCII字元z的所有字母。但這個區間一般不會用到,只是舉例說明。因為它們之間還包含著[和^等在ASCII中排列在Z和a之間的字元。 字元區間的首尾字元可以是ASCII字元清單中的任意字元。但在實際使用中,最常用的還是數字和字母字元區間。 注意:在定義字元區間的時候,不能讓區間的尾字小於首字(如[9-0]),這是不允許的。 -作為元字符只能出現在[和]之間,如果在[和]之外的任何地方,它只是一個普通的字符,只會與-本身匹配。 在同一個字元集合中可以給出多個字元區間,例如:[0-9a-zA-Z]將匹配任一個大小寫字母和數字。 來看一下符合網頁中顏色的範例: 文字: #正規表示式:#[0-9A-Fa-f] [0 -9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] #結果:【#3636FF】;height:30px; width:60px;">測試<span>测试</span>
#分析:在網頁中,顏色一般表示為一個以#開頭的RGB值,R代表紅色,G代表綠色,B代表藍色,任何一種顏色都可以透過RGB的不同組合調和出來。 RGB值以16進值表示,如#000000代表白色,#FFFFFF代表黑色,#FF0000代表紅色。所以網頁中匹配顏色的正規表示式是以#開頭,後面跟6個相同的[0-9A-Fa-f]字元集合(這可以簡單寫成#[0-9A-Fa-f]{6},會在後面的重複配對中討論到)。
三、取非匹配
字符集合通常用來指定一組必須匹配其中之一的字符,但在某些場合,我們需要反過來做,給出一組不需要得到的字符,換句話說,除了在那個字符集合中的字符,其他的任意字符都可以匹配。
例如,要符合以na或sa開頭,後面跟著的不是數字的檔案:
文字:
sales.txt
#na1.txt
na2.txt
#sa1.txt
# #sanatxt.txt
san.txt
正規表示式:[ns]a[^0-9]\.txt
結果:sales.txt
na1.txt
##na2. txtsa1.txt
sanatxt.txt
【san.txt】
分析:這個例子使用的模式正好與前面的相反,前面[0-9]只匹配數字,而這裡[^0-9]匹配的是非數字。
注意:^在[和]之間表示取非,如果出現在正規表示式的開頭,表示位置匹配匹配了,這將在後面討論到。同時,^的效果將作用於給定字元集合裡的所有字元或字元區間,而不僅限於緊跟在^字元後面的那一個字元或字元區間。如[^0-9a-z]表示不符合任何數字或小寫字母。
四、小結
元字元[和]用於定義一個字元集合,其意義是必須與該集合裡的字元之一相符。定義一個字元集合的方法有兩種:一是把所有的字元都列舉出來;二是利用元字元-以字元區間的方式給出。字符集合可以使用元字符^來取非,這將把給定的字符集合強行排除在匹配操作外,除了該字符集合裡的字符,其他字符都可以匹配。
在接下來的文章中,我們將會討論正規表示式中的一些元字元的使用。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
#以上是正規怎麼寫才能匹配一組字符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...

在JavaScript中如何獲取原型鏈上函數的參數在JavaScript編程中,理解和操作原型鏈上的函數參數是常見且重要的任�...

在微信小程序web-view中使用Vue.js動態style位移失效的原因分析在使用Vue.js...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用