基础正则和扩展正则的作用

*基础正则表达式:basic regular expression BRE
包括:^ $ . [] [^]
和扩展正则不同的是grep和sed不需要加参数也可以使用

  • ^
    ^d 以d开头的行,例如:ls l|grep "^d" 给三剑客使用
    只查看以d开头的行,正则表达式的意思为,以.....开头,^d就是以d开头
    [[email protected] data]# grep ‘^m‘ oldboy.txt 以m开头的行
    my qq is 49000448
  • $
    以什么什么结尾的行,例如
    grep "m$" yxd.txt 就是以m结尾的行
    [[email protected] data]# grep ‘m$‘ oldboy.txt 如果m后边有空格就是空格结尾,查找不到
  • ^$
    表示空行,什么符号都没有,例如
    grep -n "^$" yxd.txt 因为空格不好显示,加行号可以看出来一般用-v排除
  • .
    代表任意一个字符,文本,符号。不匹配空格,
    grep ‘.‘ yxd.txt一个字符一个字符查找,可配合grep -o 查看匹配过程
    也可以在字符中代替任意一个字符,模糊查找。
    例如:grep "ol.y" oldy.txt
    I am oldboy teacher!
    my god ,i am not olbey
    或者查看全部内容grep "." oldboy.txt 表示查找全部字符,不包括空行
    查找以点结尾的内容grep ".$" oldboy用\还原属性
  • *
    前一个文本或字符连续出现0次或0次以上.
    例如 grep ‘0‘ yxd.txt 会把所有文件显示,代表0出现0次或者0次以上,要找0所在的行命令为
    grep ‘0 ‘ yxd.txt 0后加空格
    grep -o ‘bl ‘ oldboy.txt查找bl 前一个字符显示零次,所以星号前相当于出现0次,代表出现0次就是没有
    [[email protected] data]# grep -o ‘bl ‘ oldboy.txt
    bl
    bl
    bl
    grep -o ‘bl‘ oldboy.txt
    b
    b
    bl
    b
    bl
    bl
    grep "god" a.log 代表o出现0次或者多次
    good
    gd
    god
    goood 查找go开头的o出现0次或者多次,"god"=gd的原因为"go{0}d"代表o出现0次,什么也没有,所以有gd
  • .
    重复前边的任意一个符号,也就是所有文本字符,包括空行
    以任意符号开头一直到字母o
    grep ‘^.o‘ yxd.txt
    [[email protected] data]# grep ‘^.o‘ oldboy.txt
    I am oldboy teacher!
    一直到一行最后一个o才结束,贪婪性.所有符号,任何符号,连续出现的字符,有多少匹配多少
    找出以m开头,以m结尾的行
    grep ‘^m.m$‘ oldboy.txt
  • \
    转义字符,符号,让有特殊意义的符号回归原型,例如:.就表示点

    例如:找出以点结尾的行
    grep ‘.$‘ oldboy.txt
    19.3.7.2 \n
    表示回车
    19.3.8 [ ]

[]在双引号中,如果[]中是特殊字符会有特殊含义,单引号看做普通单位.双引号中的[]里是正则也不会特殊处理br/>正则表达式认为[]里的内容都是相同的[@#$]这里认为@#$为相同符号,加上+合成一个整体例如,不加+号视为[]中只匹配一个字符
[[email protected] ~]# echo ‘#@$#1$$#@[email protected]@@##[email protected]@‘ |egrep -o ‘[$#@]+‘br/>#@$#
$$#@$$$
@@@##[email protected]@ 1没有中断再到2中断
匹配所有一个字符 grep [abc] yxd.txt 表示查找a或者b或者c [a-z]表示a到z 全部小写字母等[a-Z]大小写
[a-zA-Z0-9],单引号中的[]中的内容没有特殊含义,是一个字符
[[email protected] data]# egrep ‘[0-9]{3,}‘ oldboy.txt -o
49000448
4900000448
19.3.8.1 [^]
表示排除显示,例如:grep ‘[^mno]‘ oldboy.txt,查找除了m或n或o的内容,根据字母的,放前边是取反,放后边查找^例如[mn^]
19.3.8.2 ^[]
以括号里的开头,例如:grep ^[mno] yxd.txt 以m或以n或以o开头的行
19.3.8.3 找以小写字母开头,.!结尾
[[email protected] data]# grep ‘^[a-z].[.!]$‘ oldboy.txt
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
19.3.8.4 不以mn开头
grep ‘^[^mn]‘ oldboy.txxt
grep -v ‘^[mn]‘ oldboy.txt
sed -n ‘/^[^mn]/p‘ oldboy.txt
awk ‘/^[^mn]/‘ oldboy.txt
19.4 扩展正则表达式:
需要用egrep或者grep -E
extended regular expression ERE
包括: | + () {} ?

  • +
    前一个字符连续出现1次或一次以上,排查时只显示字母所在的一行。
    egrep ‘a+‘ yxd.txt和不同的是 只显示带有a的一行
    例如:grep -E ‘[a-z]+‘ oldboy.txt或者grep ‘[a-z]+‘ oldboy.txt取出文件中连续小写的行,加了+就不是一个字符一个字符找,一个单词一个单词找。
    可以把连续出现的东西连成一个整体
    ifconfig eth0|awk ‘NR==2‘|awk -F ‘[ :]+‘ ‘{print $4}‘ +号代表文件多个空格化为连续的一个空格
    [[email protected] data]# grep -E ‘[a-z]+‘ oldboy.txt -o
    am
    oldboy
    teacher
    teach 不加+就是一个字符一个字符匹配,加了是匹配到结束为止,也就是空格或者符号中断,接着匹配
    一般和[]配合使用,取出连续的字符
  • |
    或者的意思egrep "100|200" /etc/services grep需要加e进化才能用
  • ()
    表示一个整体。egrep ‘oldb(o|e)y‘ oldboy 表示的为oldboy|oldbey
    常用于反向引用/后向引用(sed常用)
    例如:echo 123456|sed -r ‘s#(.)#<\1>#g‘
    <123456> 引用括号里的内容,防在后边使用\1表示括起来的第一个内容
    echo 123456|sed -r ‘s#(34)#<\1>#g‘ 只引用34
    echo 123456|sed -r ‘s#(.).(..).(.)#<\2>#g‘
    这里的\2表示括起来的第几个,引用第几个括号里的内容。
    可以\2\3表示使用引用的第2块和第3块
    反向引用增加内容
    也可以增加内容
    [[email protected] ~]# find /root/ -type f -name ‘yxd.txt‘|xargs sed -ri ‘s#(.)#www.\1.org#g‘
    [[email protected] ~]# cat yxd.txt
    www.yxd.org
    www.yxd.org
    www.yx.org
    www.yxd.org
  • ?
    表示重复前一个字符0次或者1次
    例如egrep "go?d" a.log
    gd
    god
    用+号就是egrep "go+d" a.log
    good
    god
    goood
    用就是 grep "god" a.log
    good
    gd
    god
    goood
    19.4.5 {}
    自定义次数或前一个字符重复几次到几次,例如‘wq{1,3}‘代表q这个字符重复1次至3次,包括2次
    前一个字符连续出现最少几次,最多几次,
    例如:0{n,m} 前一个字符至少连续出现n次,最多连续出现了m次
    0{n} 前一个字符连续出现n次
    0{n,} 前一个字符至少连续出现n次
    0{,m} 前一个字符最多连续出现了m次
  • 前一个字符重复几次

前一个字符重复0次或0次以上
+
前一个字符重复1次或1次以上,可以把连续出现的东西连成一个整体

前一个字符重复0次或1次
{}
自定义几次或前一个字符重复几次到几次,例如:‘weeq{1,3}‘q重复1次至3次
*

基础正则和扩展正则的作用

原文地址:http://blog.51cto.com/12928749/2059863

时间: 2024-10-10 10:01:31

基础正则和扩展正则的作用的相关文章

2015年8月27日课程作业(文件权限管理及grep正则和扩展正则表达式)-JY1506402-19+liuhui880818

学习内容:文件权限管理及grep正则和扩展正则表达式 系统环境:CentOS 6.7/7 x86_64 一.作业(练习)内容: 1.总结本此课程中所涉及命令的使用方法及相关示例展示: 2.总结基本正则表达式及扩展正则表达式 3.显示/etc/passwd文件中以bash结尾的行 4.显示/etc/passwd文件中的两位数或三位数 5.显示`netstat -tan`命令结果中以'LISTEN'后跟0个.1个或者多个空白字符结尾的行 6.添加用户bash.testbash.basher以及nol

正则的扩展

正则的扩展 1.         RegExp构造函数 2.         字符串的正则方法 3.         u修饰符 4.         y修饰符 5.         sticky属性 6.         flags属性 7.         RegExp.escape() 8.         后行断言 RegExp构造函数 在ES5中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag). var regex =

js-正则表达式、ES6--(4)正则的扩展

2019-10-27 学习内容: 两大部分:js正则匹配.es6正则扩展 补充: 1.什么叫先行断言? “先行断言”指的是,x只有在y前面才匹配,必须写成/x(?=y)/.比如,只匹配百分号之前的数字,要写成/\d+(?=%)/.“先行否定断言”指的是,x只有不在y前面才匹配,必须写成/x(?!y)/.比如,只匹配不在百分号之前的数字,要写成/\d+(?!%)/. 2.什么叫后行断言? “后行断言”正好与“先行断言”相反,x只有在y后面才匹配,必须写成/(?<=y)x/.比如,只匹配美元符号之后

正则表达式,文件名通配,扩展正则之间的一些异同

正则表达式是一个神器,但初学linux时候还有文件名通配这样的东东.今天就总结一下文件名通配,正则表达式,扩展正则表达式之间有什么异同.可能写的不全,求指教. 使用方面: 正则多用来匹配过滤文本内容. 文件名通配符则用来匹配文件名较多. 支持命令: 文件处理,查看cp find ls rm mv touch 等一系列的文件匹配查找命令.(和上面说的是一个意思) 正则表达式则用在文本内容处理的各种工具grep,awk,sed,vim末行模式等. 匹配功能上正则规矩多,自然能力更强大,所以就这的区别

egrep及扩展正则

模式:pattern 正则: grep:基本正则 Extended grep:扩展正则 基本正则: . :任意单个字符 []:指定范围内 [^]:指定范围外 次数匹配 *:字符出现任意次 ?:字符出现0次或1次 \{m,n\}:字符至少出现m次,至多出现n次 \{1,\}:字符至少出现1次 .*:匹配任意长度的任意字符 锚定: ^:锚定行首 $:锚定行尾 \<或\b:锚定单词词首 \>或\b:锚定单词词尾 \(\) \(\1):引用第1个小括号的内容 grep -i:忽略大小写 -v:反向查找

sed 使用扩展正则式的分组功能进行替换

以下命令使用sed的扩展正则式的分组功能进行替换,-r参数启用扩展正则式支持 sed -r -i 's/(PASS_MAX_DAYS)\s+([0-9]+)/\1 90/' /etc/login.defs 这条命令将/etc/login.defs文件的行 PASS_MAX_DAYS 99999 替换为 PASS_MAX_DAYS 90 以下正则式支持分组功能,()表示一个分组 (PASS_MAX_DAYS)\s+([0-9]+) 将PASS_MAX_DAYS放在分组1中,[0-9]+匹配任意多个

正则表达式之扩展正则

扩展正则 扩展正则,指的是表达式中含有:+ ? | { } 等符号,在grep当中不能直接使用,需要加\拓义如果不想加\拓义的话可以使用egrep 或者grep -E 进行使用扩展正则:sed -r,和grep选项,含有+ ? | { }符号的时候需要加r选项,如果不加则需要加上\拓义awk默认支持grep.sed所有功能awk里面比较大小不能用数字和字母比较,这个比较不出来扩展正则 ? + | { }? 扩展正则 表示:?前面的字符有0个或1个a1? ==> a or a1 扩展正则 表示:+

【ES6基础】字符串扩展

4.字符串扩展 (1)for...of循环遍历. let foo = [1,2,3,4,5,6] for(let i of foo){ console.log(i); } 结果: (2)includes().startsWith().endsWith() JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中[返回某个指定的字符串值在字符串中首次出现的位置]. ES6 又提供了三种新方法. includes():返回布尔值,表示是否找到了参数字符串. sta

正则引擎入门&mdash;&mdash;正则文法匹配可以简单快捷(三)

整篇文章是对作者Russ Cox的文章Regular Expression Matching Can Be Simple And Fast的翻译,在我看来,该文章是入门正则引擎的较好的文章之一,读者在阅读之前,最好有一定的正则表达式的基础.翻译内容仅代表作者观点.侵删 该作者所有的文章的网址在此:https://swtch.com/~rsc/regexp/ 正文 正则表达式搜索算法 现在我们已经有了确定一个正则表达式是否匹配一个字符串的方法,将正则表达式转换为NFA之后以字符串为输入运行该NFA