正規表示式,又稱規則表示式。(英語:regular expression,在**中常簡寫為regex、regexp或re),電腦科學的乙個概念。正規表示式通常被用來檢索、替換那些符合某個模式(規則)的文字。
許多程式語言都支援利用正規表示式進行字串操作。例如,程式語言perl中就內建了乙個功能強大的正規表示式引擎。正規表示式這個概念最初是由unix中的工具軟體(例如sed和grep)普及開的。正規表示式通常縮寫成「regex」,單數有regexp、regex,複數有regexps、regexes、regexen。
編輯正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。
編輯正規表示式是對字串(包括普通字元(例如,a 到 z 之間的字母)和特殊字元(稱為「元字元」))操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。正規表示式是一種文字模式,該模式描述在搜尋文字時要匹配的乙個或多個字串。
編輯給定乙個正規表示式和另乙個字串,我們可以達到如下的目的:
1. 給定的字串是否符合正規表示式的過濾邏輯(稱作「匹配」):
2. 可以通過正規表示式,從字串中獲取我們想要的特定部分。
編輯正規表示式的特點是:
1. 靈活性、邏輯性和功能性非常強;
2. 可以迅速地用極簡單的方式達到字串的複雜控制。
3. 對於剛接觸的人來說,比較晦澀難懂。
for example.
由於正規表示式主要應用是文字,因此它在各種文字編輯器場合都有應用,小到著名編輯器editplus,大到microsoft word、visual studio等大型編輯器,都可以使用正規表示式來處理文字內容。
最簡單的元字元是點,它能夠匹配任何單個字元(注意不包括換行符)。假定有個檔案test.txt包含以下幾行內容:
he is arat
he is in a rut
the food is rotten
i like root beer
我們可以使用grep命令來測試我們的正規表示式,grep命令使用正規表示式去嘗試匹配指定檔案的每一行,並將至少有一處匹配表示式的所有行顯示出來。命令
grep r.t test.txt
在test.txt檔案中的每一行中搜尋正規表示式r.t,並列印輸出匹配的行。正規表示式r.t匹配乙個r接著任何乙個字元再接著乙個t。所以它將匹配檔案中的rat和rut,而不能匹配rotten中的rot,因為正規表示式是大小寫敏感的。要想同時匹配大寫和小寫字母,應該使用字元區間元字元(方括號)。正規表示式[rr]能夠同時匹配r和r。所以,要想匹配乙個大寫或者小寫的r接著任何乙個字元再接著乙個t就要使用這個表示式:[rr].t。
要想匹配行首的字元要使用抑揚字元(^)——有時也被叫做插入符。例如,想找到text.txt中行首"he"打頭的行,你可能會先用簡單表示式he,但是這會匹配第三行的the,所以要使用正規表示式^he,它只匹配在行首出現的he。
有時候指定「除了×××都匹配」會比較容易達到目的,當抑揚字元(^)出方括號中時,它表示「排除」,例如要匹配he ,但是排除前面是t or s的情形(也就是the和she),可以使用:[^st]he。
可以使用方括號來指定多個字元區間。例如正規表示式[a-za-z]匹配任何字母,包括大寫和小寫的;正規表示式[a-za-z][a-za-z]* 匹配乙個字母後面接著0或者多個字母(大寫或者小寫)。當然我們也可以用元字元+做到同樣的事情,也就是:[a-za-z]+ ,和[a-za-z][a-za-z]*完全等價。但是要注意元字元+ 並不是所有支援正規表示式的程式都支援的。關於這一點可以參考後面的正規表示式語法支援情況。
要指定特定數量的匹配,要使用大括號(注意並不是所有擴充套件正規表示式的實現都支援大括號。此外,根據具體的實現,您可能需要先使用反斜槓對其進行轉義。)。想匹配所有10和100的例項而排除1和 1000,可以使用:10\ 或 10,這個正規表示式匹配數字1後面跟著1或者2個0的模式。在這個元字元的使用中乙個有用的變化是忽略第二個數字,例如正規表示式0\ 或 0 將匹配至少3個連續的0。[2]
看完這篇文章,相信我,你已經掌握正規表示式了!
如果說什麼是我學習程式設計來最好用,最常用的知識點,那應該就是正規表示式了。嚴謹的說,正規表示式並不是一門程式語言,也不是為了一種程式語言而服務的知識。但他確實足夠好用,應用也足夠廣泛。例如可以在文字中提取規則的 號碼,電子郵箱。在office中的萬用字元也是正規表示式哦,這樣在office中做規則...
正規表示式 開發常用的正規表示式
正規表示式是一種用來進行文字匹配的工具,其語法優美簡潔。在開發中,查詢 對比以及匹配字串是家常便飯的業務,通過正規表示式我們將這些業務描述成某些需求規則,來讓我們的 更美觀 實用。例如我們要驗證使用者輸入的密碼長度是否滿足6 18位的長度,新手最常見的驗證方式是判斷輸入的密碼長度 return te...
正規表示式(二) 正規表示式的切割
切割 還記得stirng的split的方法嗎.可以按照 空格,豎線 對字串進行切割.正規表示式的切割 是指,我們按照正規表示式的規則對字串來進行一些複雜的切割 比方說現在我想按照多個空格來進行切割 string str zhangsan lisei wangwu string reg s s在這裡代...