国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

shell編程之正則表達式

2024-06-28 13:19:25
字體:
來源:轉載
供稿:網友
shell編程之正則表達式

  什么是正則表達式?正則表達式是用于描述字符排列和匹配模式的一種語法規則。在很多程序設計語言中都支持利用正則表達式來進行字符串的操作,不同語言中的正則表達式略有不同,但是畢竟都是正則,其本質思想都是一致的,當我們掌握了shell中的正則后,再去看python或者perl里面的正則表達式時,會發現其實都是一樣的東東。

  在shell的一些命令中,有些并不支持正則表達式,但是它們支持linux里面的通配符,那么通配符又是什么東東呢,它跟正則表達式又有什么關系?

  正則表達式用來在文件中匹配符合條件的字符串,正則是包含匹配。grep、awk、sed等命令都支持正則表達式。通配符用來匹配符合條件的文件名,通配符是完全匹配。ls、find、cp這些命令不支持正則表達式,所以只能使用shell自己的通配符來進行匹配了。

  通配符主要是下面三個:

*匹配任意字符
?匹配任意一個內容
[]匹配中括號中的一個字符

  首先,正則表達式是用來匹配文件中文本的字符串,而通配符是用來匹配符合條件的文件名;其次正則表達式是包含匹配,只要包含正則中的字符串,就匹配,而通配符是完全匹配,也就是說,必須要與條件中的字符串一模一樣才會匹配。

  說了這么多,其實正則表達式主要用于字符串的模式分割匹配查找替換操作,下面來關注一下正則表達式基本的元字符和它的作用。

元字符作用舉例說明
*前一個字符匹配0次或者任意多次"a*"匹配所有內容,包括空白行"aa*"匹配至少包含一個a的行"aaa*"匹配最后包含兩個連續a的字符串"aaaaa*"匹配最少包含4個連續a的字符串
.匹配除了換行符外的任意一個字符

"s..d"匹配在s和d這兩個字母之間一定有兩個

字符的單詞"s.*d"匹配在s和d字母之間有任意字符".*"匹配所有內容

^匹配行首"^hello"匹配以hello開頭的行"^M"匹配以大寫“M”開頭的行
$匹配行尾"hello$"匹配以hello結尾的行"n$"匹配以小寫“n”結尾的行"^$"匹配空白行
[]匹配中括號中指定的任意一個字符,只匹配一個字符

"[aeiou]"匹配任意一個元音字母,"[0-9]"匹配任意一位數字,"[a-z][0-9]"匹配小寫字母和一位數字構成的

兩位字符。"s[ao]id"匹配s和i字母中,要么是a,要么是o

"[0-9]"匹配任意一個數字

"^[a-z]" 匹配小寫字母開頭的行

[^]匹配中括號的字符以外的任意一個字符"[^0-9]"匹配任意一位非數字字符,"[^a-z]"表示任意一位非小寫字母"^[^a-z]"匹配不是小寫字母開頭的行"^[^a-zA-Z]"匹配不是字母開頭的行
/轉義符。用于將特殊符號的含義取消"/.$"匹配使用"."結尾的行
/{n/}表示其前面的字符恰好出現n次"[0-9]/{4/}"匹配4位數字,"[1][3-8][0-9]/{9/}"匹配手機號碼"a/{3/}"匹配a字母連續出現3次的字符串"[0-9]/{3/}"匹配包含連續的3個數字的字符串
/{n,/}表示其前面的字符出現不小于n次

"[0-9]/{2,/}"表示兩位及以上的數字。"[0-9]/{3,/}[a-z]"匹配最少用連續3個數字開頭

的字符串

/{n,m/}表示其前面的字符至少出現n次,最多出現m次

"[a-z]/{6,8/}"匹配6到8位的小寫字母。"sa/{1,3/}i"匹配在字母s和i直接有最少一個a,

最多三個a

  下面舉幾個個簡單的列子:

  (1)匹配日期格式YYYY-MM-DD     "[0-9]/{4/}-[0-9]/{2/}-[0-9]/{2/}"  (2)匹配ip地址XXX.XXX.XXX     "[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}"

  (3)匹配騰訊QQ號碼          "[1-9][0-9]/{4,9/}"


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赤峰市| 鄯善县| 固原市| 那坡县| 晴隆县| 鱼台县| 调兵山市| 台山市| 海宁市| 安化县| 西贡区| 阜阳市| 广昌县| 仙居县| 定南县| 凤山县| 桃园市| 交口县| 故城县| 阳朔县| 汝阳县| 兰溪市| 垣曲县| 财经| 阳西县| 英吉沙县| 新化县| 会理县| 山丹县| 新民市| 利川市| 双流县| 冕宁县| 巴南区| 博白县| 崇阳县| 应用必备| 奉节县| 呼伦贝尔市| 天全县| 吉首市|