正则表达式:

什么是正则表达式?

正则表达式(Regular Expression、regex或regexp,缩写为RE),也译为正规表示法、常规表示法,是一种字符模式,
用于在查找过程中匹配指定的字符。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。
正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
支持正则表达式的程序如:locate find vim grep sed awk
第一类正则表达式:
前导字符(即位于元字符前面的字符);所谓元字符就是指那些 在正则表达式中具有特殊意义的专用字符
(1).: 任意单个字符,除了换行符
(2)*: 前导字符出现 0 次或连续多次 ab*能匹配“a”,“ab”以及“abb”,但是不匹配“cb”
(3).*: 任意长度的字符
(4)^: 行的开头
(5)$: 行的结尾
(6)^$: 空行
(7)[ ] 匹配指定字符组内的任一字符
(8) [^] 匹配不在指定字符组内的任一字符
(9)^[] 匹配以指定字符组内的任一字符开头
(10)^[^] 匹配不以指定字符组内的任一字符开头
(11)\<: 取单词的头
(12)\>: 取单词的尾
(13) \<\> 精确匹配符号
(14) + 前导字符连续出现一次或者多次 例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
(15) ? 前导字符连续出现零次或者一次
(16) \{n\} 匹配前面字符连续出现n次
(17) \{n,\} 匹配前面字符至少出现n次
(18) \{n,m\} 匹配前面字符出现n次与m次之间
(19) \(..\) 保存被匹配的字符
\d 匹配数字 [0-9]
\w 匹配字母数字下划线[a-zA-Z0-9_]
\s 匹配空格、制表符、换页符[\t\r\n]
 

扩展类的正则表达式 grep -E | egerp

扩展正则表达式元字符
+ 匹配一个或多个前导字符
? 匹配零个或一个前导字符
a|b 匹配a或b
() 组字符 hello myself yourself (my|your)self
x{m} 字符x重复m次
x{m,} 字符x重复至少m次
x{m,n} 字符x重复m到n次
通配符和正则表达式相应符号的区别:
正则表达式 *(匹配0或多个前字符) ?(匹配0或1个前字符)
通配符 *(匹配 0 或多个任意字符) ?(匹配任意单个字符)
有时候,我们想让 通配符,或者元字符变成普通字符,不需要使用它。 shell提供转义符有三种。
' ' (单引号) 又叫硬转义,其内部所有的shell 元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。
" " (双引号) 又叫软转义,其内部只允许出现特定的shell 元字符:$用于参数代换 `用于命令代替
\ (反斜杠) 又叫转义,去除其后紧跟的元字符或通配符的特殊意义。
第二类正则表达式(POSIX标准):
表达式 功能 示例
[:alnum:] 字母与数字字符 [[:alnum:]]+
[:alpha:] 字母字符(包括大小写字母) [[:alpha:]]{4}
[:blank:] 空格与制表符 [[:blank:]]*
[:digit:] 数字字母 [[:digit:]]?
[:lower:] 小写字母 [[:lower:]]{4,}
[:upper:] 大写字母 [[:upper:]]+
[:punct:] 标点符号 [[:punct:]]
[:space:] 包括换行符,回车等在内的所有空白 [[:space:]]+

 

 

posted @ 2019-09-20 14:31  Mùtou  阅读(266)  评论(0编辑  收藏  举报