day5:shell中的正则表达式

正则表达式 描述 示例
\

转义符,将特殊字符进行转义,忽略其特殊意义

a\.b匹配a.b,但不能匹配ajb,.被转义为特殊意义

匹配行首,awk中,^则是匹配字符串的开始 ^bash匹配以bash开头的行
$ 匹配行尾,awk中,$是匹配字符串的结尾 tux$匹配以tux结尾的行
. 匹配除换行符\n之外的任意单个字符 ab.匹配abc或bad,不可匹配abcd或abde,只能匹配单字符
[] 匹配包含在[字符]之中的任意一个字符 coo[kl]可以匹配cook或cool
[^] 匹配[^字符]之外的任意一个字符 123[^45]不可以匹配1234或1235,1236、1237都可以
[-] 匹配[]中指定范围内的任意一个字符,要写成递增 [0-9]可以匹配1、2或3等其中任意一个数字
? 匹配之前的子表达式1次或者0次  
+ 匹配之前的子表达式1次或者多次  
* 匹配之前的子表达式0次或者多次  
() 匹配表达式,创建一个用于匹配的子串  
(n) 匹配之前的子表达式n次,n是可以为0的正整数   
|  交替匹配|两边的任意一项 ab(c|d)匹配abc或abd

关于正则表达式更多请参考:

  1.linux shell 正则表达式(BREs,EREs,PREs)差异比较 - 程默 - 博客园 (cnblogs.com)

  2.shell 正则表达式详细整理_正则表达式_脚本之家 (jb51.net)

 

shell常用正则表达式:

“^\d+$” //非负整数(正整数 + 0) 

“^[0-9]*[1-9][0-9]*$” //正整数 

“^((-\d+)|(0+))$” //非正整数(负整数 + 0) 

“^-[0-9]*[1-9][0-9]*$” //负整数 

“^-?\d+$” //整数 

“^\d+(\.\d+)?$” //非负浮点数(正浮点数 + 0) 

“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮点数 

“^((-\d+(\.\d+)?)|(0+(\.0+)?))$” //非正浮点数(负浮点数 + 0) 

“^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$” //负浮点数 

“^(-?\d+)(\.\d+)?$” //浮点数 

“^[A-Za-z]+$” //由26个英文字母组成的字符串 

“^[A-Z]+$” //由26个英文字母的大写组成的字符串 

“^[a-z]+$” //由26个英文字母的小写组成的字符串 

“^[A-Za-z0-9]+$” //由数字和26个英文字母组成的字符串 

“^\w+$” //由数字、26个英文字母或者下划线组成的字符串 

“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$” //email地址 

“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$” //url 

/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日 

/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年 

“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$”   //Email 

/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码 

“^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$”   //IP地址  

匹配中文字符的正则表达式: [\u4e00-\u9fa5] 

匹配双字节字符(包括汉字在内):[^\x00-\xff] 

匹配空行的正则表达式:\n[\s| ]*\r 

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 

匹配首尾空格的正则表达式:(^\s*)|(\s*$) 

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 

匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$ 

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 

匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 

匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$ 

 

posted @ 2021-11-12 16:00  诟笑  阅读(112)  评论(0编辑  收藏  举报