美文网首页
linux(十一) 正则

linux(十一) 正则

作者: alonwang | 来源:发表于2016-09-22 16:07 被阅读18次

基础正则表达式字符汇整

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 等等

相关文章

网友评论

      本文标题:linux(十一) 正则

      本文链接:https://www.haomeiwen.com/subject/xymzettx.html