基础正则表达式字符汇整
RE字符 | 意义 |
---|---|
^word | 以word开头,grep '^word' regular_expression.txt
|
word$ | 以word结尾,grep 'word$' regular_expression.txt
|
. | 一定有一个任意字符.grep 'e.e' regular_expression.txt
|
\ | 跳脱字符 |
* | 重复任意个前面的RE字符.grep 'ess*' regular_expression.txt
|
[list] | 能且只能匹配list中的一个 字符,grep 'g[ld]' regular_expression.txt
|
[n1-n2] | 匹配n1到n2这个字符序列.grep [A-Z] regular_expression.txt
|
[^list] | 反向选择,匹配不包含list中任意一个字符的行.grep [^A-Z] regular_expression.txt
|
{n,m} | 前一个RE字符重复n-m次.grep 'go\{2,3\}g' regular_expression.txt
|
延伸型正则表达式
去除注释行和空行
egrep -v '^$|^#' regular_expression.txt
如果使用基础正则表达式
//去除空行和注释行其中起关键作用的是双引号中的`|`,在这里它表示`or`.
grep -v '^$' regular_expression.txt | grep -v '^#' regular_expression.txt
注意,!
和>
在正则表达式中并不是特殊字符.
特殊符号 | 代表意义 |
---|---|
[:alnum:] | 代表任何大小写字符及数字,0-9,a-z,A-Z |
[:alpha:] | 代表任何英文大小写字符,a-z,A-Z |
[:blank:] | 代表[Space]键和[Tab]键两者(即空白字符) |
[:cntrl:] | 代表键盘上的控制按键,包括CR,LF,Tab,Del... |
[:digit:] | 代表数字,0-9 |
[:graph:] | 除了空白字符外的其它的所有按键 |
[:lower:] | 代表小写字符,a-z |
[:print:] | 任何能被打印出的字符 |
[:punct:] | 标点符号 |
[:upper:] | 大写字符,A-Z |
[:space:] | 任何会产生空白的字符,[Space],[Tab],CR |
[:xdigit:] | 16进制的数字类型,0-9,A-F,a-f |
- 正则表达式就是处理字串的方法,他是以行为单位来进行字串的处理行为;
- 正表达式通过一些特殊符号的辅助,可以让使用者轻易的达到“搜寻/删除/取代”某特定
字串的处理程序; - 只要工具程序支持正则表达式,那么该工具程序就可以用来作为正则表达式的字串处理
之用; - 正则表达式与万用字符是完全不一样的东西!万用字符 (wildcard) 代表的是 bash 操
作接口的一个功能, 但正则表达式则是一种字串处理的表示方式! - 使用 grep 或其他工具进行正则表达式的字串比对时,因为编码的问题会有不同的状态,
因此, 你最好将 LANG 等变量设置为C或者是en等英文语系! - grep与egrep在正则表达式里面是很常见的两个程序,其中,egrep支持更严谨的正则
表达式的语法; - 由于编码系统的不同,不同的语系 (LANG) 会造成正则表达式撷取数据的差异。因此
可利用特殊符号如 [:upper:] 来替代编码范围较佳; - 由于严谨度的不同,正则表达式之上还有更严谨的延伸正则表达式;
- 基础正则表达式的特殊字符有: *, ., [], [-], , ^, $ 等!
- 常见的支持正则表达式的工具软件有: grep , sed, vim 等等