歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux正則表達式初入門

了解Linux正則表達式之前,需要了解Linux中通配符和正則的區別:通配符主要用於bash環境,而正則大多數用於Linux三劍客(grep、sed、awk)等中…且Linux中的正則又和其他開發環境下的正則有所區別,咱們暫時研究的還只是Linux環境下的正則…

通配符基礎

通配符 描述 示例 * 任意多個字符 find . *.sh ? 代表任意一個字符 find . ?.sh ; 連續不同命令分隔 ls m1;ls m2 # 配置文件注釋 ####crontab#### | 管道符 find . -type f -name "*.txt" | xargs rm -f ~ 用戶的家目錄 oldboy~ - 上一次操作目錄 su - $ 變量符號 $PATH    / 根 / > 重定向 echo “linux”>oldboy.sh >> 追加重定向 echo “linux”>>oldboy.sh < 輸入 xargs –n 2 <oldboy.txt << 輸入重定向 xargs –n 2 <<oldboy.txt 單引號所見即所得 echo ‘date’==>date 雙引號變量置換

echo “date”==>date

num=3
echo “$num”==>3 

` 相當於$()

ls  ==>oldboy.sh
echo `ls`==>oldboy.sh

 

{] 內容序列 touch m{1..10}
cp file{,.bak} ! 取反 find .  -type f ! -name  "*.sh" && 並且 && || 或者 ||

 

正則表達式基礎組成

正則表達式 描述 示例 ^ 匹配行首 ^abc  匹配以abc開頭的行  $ 匹配結尾 def$  匹配以def結尾的行 . 任意一個字符 a.c  匹配abc、adc等 \ 轉義字符,還原字符本身含義 \.  代表點本身 * 重復0個或者多個前一個字符 o*  代表0個o或者多個o .* 任意字符 ^.* 代表以任意字符開頭 [abc] 匹配字符集合裡的任意一個字符 [a-z][A-Z][0-9] 任意a-z,A-Z,0-9 [^abc] 匹配不包含^後的所有字符 [^abc]  不包含abc的所有字符 a\{n,m\}
a\{n,\}
a\{n\} 匹配重復n到m次a字符
重復至少n次
只重復n次 0\{0,3\} 0重復了0-3次
0\{3,\}重復至少3次0
0\{3\}只重復3次0 () 創建一個用於匹配的子串 ma(tri)?匹配max或maxtrix

 

擴展的正則表達式(grep –E 或者 egrep)

正則表達式 描述 示例 + 匹配1個或者多個
(*是0個或者多個) a+  匹配1個到多個a ? 匹配0個或者一個
(.是只有一個) a? 匹配0個a或者1個a | 同時過濾多個字符 grep –E “3306|1521” /etc/services

 

元字符

元字符(meta character)是一種Perl風格的正則表達式,只有一部分文本處理工具支持它,並不是所有的文本處理工具都支持。

正則表達式 描述 示例 \b 單詞邊界 \bcool\b 匹配cool,不匹配coolant \B 非單詞邊界 cool\B 匹配coolant,不匹配cool \d 單個數字字符 b\db 匹配b2b,不匹配bcb \D 單個非數字字符 b\Db 匹配bcb,不匹配b2b \w 單個單詞字符(字母、數字與_) \w 匹配1或a,不匹配& \W 單個非單詞字符 \W 匹配&,不匹配1或a \n 換行符 \n 匹配一個新行 \s 單個空白字符 x\sx 匹配x x,不匹配xx \S 單個非空白字符 x\S\x 匹配xkx,不匹配xx \r 回車 \r 匹配回車 \t 橫向制表符 \t 匹配一個橫向制表符 \v 垂直制表符 \v 匹配一個垂直制表符 \f 換頁符 \f 匹配一個換頁符

 

POSIX字符類

POSIX字符類是一個形如[:...:]的特殊元序列(meta sequence),他可以用於匹配特定的字符范圍

正則表達式 描述 示例 [:alnum:] 匹配任意一個字母或數字字符 [[:alnum:]]+ [:alpha:] 匹配任意一個字母字符(包括大小寫字母) [[:alpha:]]{4} [:blank:] 空格與制表符(橫向和縱向) [[:blank:]]* [:digit:] 匹配任意一個數字字符 [[:digit:]]? [:lower:] 匹配小寫字母 [[:lower:]]{5,} [:upper:] 匹配大寫字母 ([[:upper:]]+)? [:punct:] 匹配標點符號 [[:punct:]] [:space:] 匹配一個包括換行符、回車等在內的所有空白符 [[:space:]]+ [:graph:] 匹配任何一個可以看得見的且可以打印的字符 [[:graph:]] [:xdigit:] 任何一個十六進制數(即:0-9,a-f,A-F) [[:xdigit:]]+ [:cntrl:] 任何一個控制字符(ASCII字符集中的前32個字符) [[:cntrl:]] [:print:] 任何一個可以打印的字符 [[:print:]]

Linux 基礎入門教程----正則表達式基礎   http://www.linuxidc.com/Linux/2015-08/121441.htm

Linux正則表達式sed 詳述  http://www.linuxidc.com/Linux/2015-04/116309.htm

Linux正則表達式特性及BRE與ERE的區別 http://www.linuxidc.com/Linux/2014-03/99152.htm

grep使用簡明及正則表達式 http://www.linuxidc.com/Linux/2013-08/88534.htm

正則表達式的用法 http://www.linuxidc.com/Linux/2013-03/81897.htm

正則表達式之零寬斷言 http://www.linuxidc.com/Linux/2013-03/81897.htm

Linux中正則表達式與文件格式化處理命令(awk/grep/sed) http://www.linuxidc.com/Linux/2013-03/81018.htm

基礎正則表達式 http://www.linuxidc.com/Linux/2014-09/106296.htm

常用正則表達式整理 http://www.linuxidc.com/Linux/2014-10/108076.htm

Copyright © Linux教程網 All Rights Reserved