Linux正則表達式
原文 http://www.cnblogs.com/kaituorensheng/p/4236254.html
正則表達式是一種符號表示法,用于識別文本模式。Linux處理正則表達式的主要程序是grep。grep搜索與正則表達式匹配的 行 ,并將結果輸送至標準輸出。
<h4> 1. grep匹配模式 </h4>
<p> grep按下述方式接受選項和參數(其中,regex表示正則表達式) </p>
<pre class="css"><span>grep</span> <span>[options]</span> <span>regex</span> <span>[files]</span></pre>
<p> 其中options主要為下表: </p>
<table align="center" class="ke-zeroborder">
<tbody>
<tr>
<td> 選項 </td>
<td> 含義 </td>
<td> 功能描述 </td>
</tr>
<tr>
<td> -i </td>
<td> ignore case </td>
<td> 忽略大小寫 </td>
</tr>
<tr>
<td> -v </td>
<td> invert match </td>
<td> 不匹配匹配的 </td>
</tr>
<tr>
<td> -l </td>
<td> file-with-match </td>
<td> 輸出匹配的文件名 </td>
</tr>
<tr>
<td> -L </td>
<td> file-without-match </td>
<td> 輸出不匹配的文件名 </td>
</tr>
<tr>
<td> -c </td>
<td> count </td>
<td> 輸出匹配的數目(行數) </td>
</tr>
<tr>
<td> -n </td>
<td> number </td>
<td> 輸出匹配行的同時在前面加上文件名及在文件名中的行數 </td>
</tr>
<tr>
<td> -h </td>
<td> no-filename </td>
<td> 抑制文件名的輸出 </td>
</tr>
</tbody>
</table>
<p> 舉例說明 </p>
<p> 假設有三個文件del1、del2、del3三個文件的內容如下 </p>
<p> <img src="https://simg.open-open.com/show/3cbc9a2df9d85865e2e36efcee0f24db.png" alt="Linux正則表達式" width="558" height="228" /> </p>
<p> 例子 </p>
<p> <img src="https://simg.open-open.com/show/178acaa32d6b1ca9cfd2f16336375700.png" alt="Linux正則表達式" width="438" height="457" /> </p>
<h4> 2. 特殊字符 </h4>
<table class="ke-zeroborder">
<tbody>
<tr>
<td> 符號 </td>
<td> 含義 </td>
<td> 舉例 </td>
</tr>
<tr>
<td> ^ </td>
<td> 開始標記 </td>
<td> "^abc"滿足的例子abc、abcd </td>
</tr>
<tr>
<td> ^ </td>
<td> 非(在[]內) </td>
<td> "[^abc]"滿足的例子:ddd、mpd </td>
</tr>
<tr>
<td> $ </td>
<td> 結束標記 </td>
<td> ”abc$”滿足的例子abc、mmabc </td>
</tr>
<tr>
<td> . </td>
<td> 任意字符 </td>
<td> "a.c"滿足的例子abc、fapcc </td>
</tr>
<tr>
<td> \< </td>
<td> 匹配單詞開始 </td>
<td> "\<abc"滿足的例子abc、abcd </td>
</tr>
<tr>
<td> \> </td>
<td> 匹配單詞結束 </td>
<td> "abc\>"滿足的例子abc、pmrabc </td>
</tr>
<tr>
<td> | </td>
<td> 或 </td>
<td> "AAA|BBB"滿足的例子AAA、BBBpp </td>
</tr>
</tbody>
</table>
<h4> 3. 范圍 </h4>
<table class="ke-zeroborder">
<tbody>
<tr>
<td> 符號 </td>
<td> 含義 </td>
<td> 舉例 </td>
</tr>
<tr>
<td> ? </td>
<td> 匹配前一個字符0或1次 </td>
<td> "abc?"滿足的例子ab、mabcd </td>
</tr>
<tr>
<td> * </td>
<td> 匹配前一個字符≥0次 </td>
<td> "abc*"滿足的例子abbb、abcdk </td>
</tr>
<tr>
<td> + </td>
<td> 匹配前一個字符≥1次 </td>
<td> "abc+"滿足的例子abcd、abcccdd </td>
</tr>
<tr>
<td> {} </td>
<td> {m}、{m,n}、{m,}、{,n}分別為匹配前一個字符m次、m到n次、≥m次、≤n次 </td>
<td> "abc\{3,5\}"滿足的例子abcccc、abcccccc </td>
</tr>
<tr>
<td> [] </td>
<td> []內如果不是范圍,選其一;是范圍的話,范圍內選其一 </td>
<td> "m[abc]p"滿足的例子acpd;m[1-9]p滿足的例子m8pp </td>
</tr>
<tr>
<td> () </td>
<td> 將候選的所有元素放在()內,用|隔開 </td>
<td> "a(1|2|3)bc"滿足的例子a1bc、mba3bcd </td>
</tr>
</tbody>
</table>
<p> 注意:{}在鄭則表達式中需要轉移,而{}()不需要。 </p>
<p> 注意理解{}范圍的例子: </p>
<p> <img src="https://simg.open-open.com/show/8f07391d9106fc33e8efad8e96513077.png" alt="Linux正則表達式" width="432" height="229" /> </p>
<h4> 4. 標準字符類 </h4>
<table class="ke-zeroborder">
<tbody>
<tr>
<td width="20%"> 字符類 </td>
<td> 釋義 </td>
</tr>
<tr>
<td> [:alnum:] </td>
<td> 字母和數字,與[A-Za-z0-9]等價 </td>
</tr>
<tr>
<td> [:word:] </td>
<td> [:alnum:]加上下劃線_ </td>
</tr>
<tr>
<td> [:alpa:] </td>
<td> 字母,與[A-Za-z]等價 </td>
</tr>
<tr>
<td> [:digit:] </td>
<td> 數字,與[0-9]等價 </td>
</tr>
<tr>
<td> [:xdigit:] </td>
<td> 十六進制字符,與[0-9A-Fa-f等價] </td>
</tr>
<tr>
<td> [:blank:] </td>
<td> 空格和制表符 </td>
</tr>
<tr>
<td> [:graph:] </td>
<td> 可見字符,靠擴33~126 </td>
</tr>
<tr>
<td> [:lower:] </td>
<td> 小寫字母 </td>
</tr>
<tr>
<td> [:upper:] </td>
<td> 大寫字母 </td>
</tr>
<tr>
<td> [:print:] </td>
<td> 可打印字符 </td>
</tr>
<tr>
<td> [:space:] </td>
<td> 空白字符,等價于[\t\r\n\v\f] </td>
</tr>
<tr>
<td> [:punct:] </td>
<td> 標點符號 </td>
</tr>
<tr>
<td> [:cntrl:] </td>
<td> ASCII控制碼,包括字符0~31以及127 </td>
</tr>
</tbody>
</table>
<p> 例子 </p>
<p> <img src="https://simg.open-open.com/show/b22d030a05d618a616a0290434e5e0eb.png" alt="Linux正則表達式" width="556" height="288" /> </p>
</div>
</div>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!