成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

全面分析Linux正則表達式(一)

運維 系統運維
正則表達式廣泛出現在UNIX/Linux相關的各種領域和多種編程語言里。系統管理員也應該熟悉這些正則表達式以利于我們工作。

正則表達式現在應用十分的廣泛,出現在UNIX/Linux相關的各種領域和多種編程語言里。Linux系統管理員應該熟悉這些表達式。從常見的shell命令到大名鼎鼎的Perl語言再到當前非常流行的PHP,它都扮演著一個重要的角色。甚至windows的命令行控制臺也支持正則表達式。

可以說,它是學好Linux/UNIX必需掌握的一個知識點,否則你連Linux的啟動腳本都讀不懂。偏偏它又的確有點晦澀難懂,而且相關的資料又大部分是英文,更為它的學習增加了幾多困難。即使有些中文的翻譯資料,不同的譯者對一些術語的譯法也五花八門,讀著讓人平添困惑。為此,我決定為它寫一個簡明教程,盡量可以覆蓋正則表達式涉及到的各主要概念。

我并不想把本文寫成一本詳細的正則表達式語法手冊,事實上,這些手冊已經存在了,不過讀起來比較難懂。我希望的是在完成本教程后,你可以比較輕松的讀懂各種工具的正則表達式語法手冊并可以迅速上手,不過要用好正則表達式,可不是一篇短短的教程可以解決的,那是無數實踐練習的結果。但是,本文的***一部分對于正則表達式的編寫提出了一些原則性的建議,學習一下這些正則表達式應用先驅者的經驗會讓我們在今后的實踐中少走一些彎路。

正則表達式是英文“regular expressions”的譯文,它的產生據說可以追溯到“神經網絡”等比較高深的理論。那么什么是正則表達式呢?

正則表達式是從左向右去匹配目標字符串的一組模式。大多數字符在模式中表示它們自身并匹配目標中相應的字符。舉個最簡單的例子,模式“The quick brown fox”匹配了目標字符串中與其完全相同的一部分。

前面已經提過,正則表達式被許多植根于UNIX/Linux的工具采用,可是這些工具的正則表達式語法并不完全相同,它們中的一些對正則表達式語法的擴展并不被其它工具識別,這也為正則表達式的使用增加了難度。因此,當你在一個具體的環境中使用正則表達式時,你還要先看一下目標環境支持的語法范圍,以確保你的正則表達式被正確的解析。
在本文中列舉的例子里,我們用正斜線“/”做為模式的定界符(delimiter),一個模式用下面這種格式表示:

/[A-Z]+(abc|xyz)*/i


本文將較詳細的闡明下面這些正則表達式概念:模式修正符(modifier),元字符(Meta-characters),子模式(subpatterns)與逆向引用(Back references),重復(Repetition)和量詞(quantifiers),斷言(Assertions),注釋,正則表達式中的遞歸,***我介紹一款方便學習正則表達式的工具并介紹一些正則表達式編寫的思路。

正則表達式的模式修正符(modifier)

正則表達式的模式修正符主要用來限定模式與目標字符串的匹配方式,例如是否需要大小寫敏感的匹配,是單行模式還是多行模式。修正符中的空格和換行被忽略,其它字符會導致錯誤。下面列舉一些常見的模式修正符。注意,模式修正符是區分大小寫的。

i:非大小寫敏感模式,:如果設定此修正符,模式中的字符將同時匹配大小寫字母。

m:多行模式,當設定了此修正符,“行起始”和“行結束”除了匹配整個字符串開頭和結束外,還分別匹配其中的換行符的之后和之前。

s:單行模式,如果設定了此修正符,模式中的圓點元字符(.)匹配所有的字符,包括換行符。沒有此設定的話,則不包括換行符。

對于多行模式和單行模式,一個容易讓初學者迷惑的地方是這兩者并不向字面上那樣是互斥的。事實上,它們只是分別定義了英文句點(.)、音調符(^)和美元符($)這三個元字符的匹配方式,因此,單行模式與多行模式的修正符可以同時使用。

x:如果設定了此修正符,模式中的空白字符除了被轉義的或在字符類中的以外完全被忽略,在未轉義的字符類之外的 # 以及下一個換行符之間的所有字符,包括兩頭,也都被忽略。它使得可以在復雜的模式中加入注釋。我們會在后面的部分更詳細的講解正則表達中的注釋。

模式修正符還有很多,這里不再一一列舉。我們會結合后面的內容介紹一些其它的模式修正符。不同的工具也可以添加自己的模式修正符,不過上面幾最為常見。

模式修正符通常跟在模式定義結束符的后面,例如下面例子中模式***的“i”字符。/[A-Z]+(abc|xyz)*/i,這時此修正符會對整個匹配模式起作用。模式修正符也可以在模式內部通過包含在 "(?" 和 ")" 之間的修正符字母序列來實現。例如,(?im) 設定了不區分大小寫,多行模式。也可以通過在字母前加上減號來取消這些選項。例如組合的選項 (?im-s),設定了不區分大小寫和多行模式,并取消了單行模式。如果一個字母在減號之前與之后都出現了,則該選項被取消設定。

注意,如果(?im-s)出現在一個子模式內(被另一對小括號包含)會把模式修正符的作用局限在該子模式中。

【編輯推薦】

  1. 詳解Linux init進程及相關文件
  2. 詳細剖析Linux服務器安全防護十個方面
  3. 分享一個簡單的Linux數據備份方案
  4. 怎樣處理Linux死機
  5. 詳細介紹查看Linux硬件信息命令
責任編輯:小霞 來源: 博客園
相關推薦

2010-03-03 12:53:50

Linux正則表達式

2010-03-03 12:58:41

Linux正則表達式

2010-03-03 13:09:10

Linux正則表達式

2010-03-03 11:03:51

Linux正則表達式

2010-03-03 13:31:25

Linux正則表達式

2017-05-12 10:47:45

Linux正則表達式程序基礎

2010-07-14 09:47:04

Perl正則表達式

2022-01-04 11:35:03

Linux Shel正則表達式Linux

2010-07-13 16:56:30

Perl正則表達式

2020-09-04 09:16:04

Python正則表達式虛擬機

2018-09-27 15:25:08

正則表達式前端

2024-09-14 09:18:14

Python正則表達式

2022-03-28 06:19:14

正則表達式開發

2009-02-18 09:48:20

正則表達式Java教程

2019-07-17 15:45:47

正則表達式字符串前端

2021-01-27 11:34:19

Python正則表達式字符串

2009-09-16 18:19:34

正則表達式組

2011-06-02 12:34:16

正則表達式

2010-03-25 18:25:36

Python正則表達式

2021-07-14 23:54:01

正則表達式數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品色 | 国产一区二区日韩 | 欧美成人不卡 | 国产高清在线视频 | 国产91在线 | 亚洲 | 一区二区三区高清不卡 | 欧美伊人影院 | 亚洲一区二区三区四区在线观看 | 国产一区二区三区在线看 | 精品在线99 | 亚洲精品区 | 黑人巨大精品欧美一区二区免费 | h在线免费观看 | 国产成人在线观看免费 | 国产免费人成xvideos视频 | 国产精品一区一区 | 538在线精品 | 欧美一级在线免费 | 三区在线观看 | 婷婷精品 | 亚洲一区二区久久久 | 伊人网综合在线 | 中文字幕在线观 | a级免费观看视频 | 噜噜噜噜狠狠狠7777视频 | 国产中文字幕在线 | 黄色片在线免费看 | 亚洲视频一区 | 日韩一区二区三区四区五区 | 天堂资源最新在线 | 日韩欧美在线一区 | 在线观看中文字幕 | 精品久久久999 | 中文字幕伊人 | 91精品国产91久久久久久最新 | 99久久婷婷国产综合精品电影 | 91久久精品日日躁夜夜躁欧美 | 久久国产一区二区三区 | 九九精品在线 | 黄片毛片| 九九热在线免费观看 |