学习笔记(8)——正则表达式
2015-12-21 10:21
423 查看
正则表达式就是处理字符串的方法(已行为单位)。
Linux系统中,语系对正则表达式的使用是有影响的。就编码顺序而言,当LANG=C时:0-9A-Za-z;当LANG=zh_CN时:0-9aA-zZ。这一差异使得正则表达式在使用“[n1-n2]”时会出现问题。
符号表示:在不确定语系或是不方面更改语系时,建议使用这种表示符号代替[n1-n2]的使用方式,以免发生错误。
[:alnum:]:英文大小写字母以及数字。
[:alpha:]:英文大小写字母。
[b] [:digit:][/b]:数字。
[:lower:]:小写字母。
[b] [:upper:][/b]:大写字母。
[:blank:]:空格键或TAB键。
[:cntrl:]:键盘上面的控制键,包括CR,LF,TAB,Del等。
[:graph:]:除了空格键和TAB键以外的所有按键。
[:print:]:可以被打印出来的字符。
[:punct:]:标点符号。
[:space:]:会产生空白的字符,包括TAB等。
[:xdigit:]:十六进制的数字类型。
正则表达式的符号:暂时与grep命令(笔记7中介绍过)连用,用作筛选。
^word:^字符表示行首,即word字符在行首出现。如:grep -n '^the' test 表示显示test文件中行首为the的行。(-n 参数是显示行编号)
word$:$字符表示行尾,即word字符在行尾出现。如:grep -n '\.$' test 表示显示test文件中行尾为“.”的行。
\:转义字符
.:代表一个确定存在的任意字符。如:grep -n 't.st' test 表示显示test文件中含有“t*st”的行,*可以是任意字符,但必须存在,不能是“tst”。
*:代表0到无穷多个前一个字符。如:grep -n 'tes*t' test 表示显示test文件中含有“te(s)t”的行,其中字符s可以是任意数量的。
[list]:代表从字符集合中选择一个字符。如:grep -n 'te[asdf]t' test 表示显示test文件中含有“teat”、“test”、“tedt”、“teft”的行。
[n1-n2]:代表在范围内选取一个字符。如:grep -n 'te[a-z]t' test 表示显示test文件中含有“te(S)t”的行,其中字符S可以是小写字母中的任意一个。注意:这种用法最好在LANG=C的语系中使用。
[^list]:代表从不在字符集合中的一个字符。如:grep -n 'te[asdf]t' test 表示显示test文件中含有含有“te(s)t”的行,其中不包括含有“teat”、“test”、“tedt”、“teft”的行。
\{n,m\}:本意为{m,n},但在bash中“{”和“}”是有特殊含义的字符,因此要用\转义字符进行转义。表示:连续n到m个前一个字符,如果m缺省,则表示n到无穷多个;如果m和逗号都缺省,则表示n个前一个字符。如: grep -n 'tes\{1,3\}t' test 表示显示test文件中含有“test”、“tesst”、“tessst”的行。
扩展正则表达式:配合egrep使用,或者grep -E。
+:重复一个或一个以上的前一个字符。
?:重复零个或一个的前一个字符。
|:用或的方式找出数个字符串。如:egrep -n 'test|at' test 表示显示test文件中含有“test”或“at”的行。
():找出组字符串。如:egrep -n 'g(la|oo)d' test 表示显示test文件中含有“glad”或“good”的行。
()+:多个重复组的判别。如egrep -n 'A(test)+B' test 表示显示test文件中以A开头,以B结尾,中间含有一个或一个以上“test”的字符串的所在行。
Linux系统中,语系对正则表达式的使用是有影响的。就编码顺序而言,当LANG=C时:0-9A-Za-z;当LANG=zh_CN时:0-9aA-zZ。这一差异使得正则表达式在使用“[n1-n2]”时会出现问题。
符号表示:在不确定语系或是不方面更改语系时,建议使用这种表示符号代替[n1-n2]的使用方式,以免发生错误。
[:alnum:]:英文大小写字母以及数字。
[:alpha:]:英文大小写字母。
[b] [:digit:][/b]:数字。
[:lower:]:小写字母。
[b] [:upper:][/b]:大写字母。
[:blank:]:空格键或TAB键。
[:cntrl:]:键盘上面的控制键,包括CR,LF,TAB,Del等。
[:graph:]:除了空格键和TAB键以外的所有按键。
[:print:]:可以被打印出来的字符。
[:punct:]:标点符号。
[:space:]:会产生空白的字符,包括TAB等。
[:xdigit:]:十六进制的数字类型。
正则表达式的符号:暂时与grep命令(笔记7中介绍过)连用,用作筛选。
^word:^字符表示行首,即word字符在行首出现。如:grep -n '^the' test 表示显示test文件中行首为the的行。(-n 参数是显示行编号)
word$:$字符表示行尾,即word字符在行尾出现。如:grep -n '\.$' test 表示显示test文件中行尾为“.”的行。
\:转义字符
.:代表一个确定存在的任意字符。如:grep -n 't.st' test 表示显示test文件中含有“t*st”的行,*可以是任意字符,但必须存在,不能是“tst”。
*:代表0到无穷多个前一个字符。如:grep -n 'tes*t' test 表示显示test文件中含有“te(s)t”的行,其中字符s可以是任意数量的。
[list]:代表从字符集合中选择一个字符。如:grep -n 'te[asdf]t' test 表示显示test文件中含有“teat”、“test”、“tedt”、“teft”的行。
[n1-n2]:代表在范围内选取一个字符。如:grep -n 'te[a-z]t' test 表示显示test文件中含有“te(S)t”的行,其中字符S可以是小写字母中的任意一个。注意:这种用法最好在LANG=C的语系中使用。
[^list]:代表从不在字符集合中的一个字符。如:grep -n 'te[asdf]t' test 表示显示test文件中含有含有“te(s)t”的行,其中不包括含有“teat”、“test”、“tedt”、“teft”的行。
\{n,m\}:本意为{m,n},但在bash中“{”和“}”是有特殊含义的字符,因此要用\转义字符进行转义。表示:连续n到m个前一个字符,如果m缺省,则表示n到无穷多个;如果m和逗号都缺省,则表示n个前一个字符。如: grep -n 'tes\{1,3\}t' test 表示显示test文件中含有“test”、“tesst”、“tessst”的行。
扩展正则表达式:配合egrep使用,或者grep -E。
+:重复一个或一个以上的前一个字符。
?:重复零个或一个的前一个字符。
|:用或的方式找出数个字符串。如:egrep -n 'test|at' test 表示显示test文件中含有“test”或“at”的行。
():找出组字符串。如:egrep -n 'g(la|oo)d' test 表示显示test文件中含有“glad”或“good”的行。
()+:多个重复组的判别。如egrep -n 'A(test)+B' test 表示显示test文件中以A开头,以B结尾,中间含有一个或一个以上“test”的字符串的所在行。
相关文章推荐
- EMI/RFI (开关电源外壳带高压?)
- iOS 时间状态栏的隐藏和显示 重载两个函数即可
- 语言c++(index)
- qt超强精美绘图控件 - QCustomPlot一览 及 安装使用教程
- ASP.NET MVC 身份认证
- 我们为什么这么拼?(转载自微信)
- 数据结构 个人总结——名词
- dblp 数据集之python lxml解析
- python下载网页源码 写入文本
- C++命名空间
- 手机移动端WEB资源整合
- 게...마련이다=기...마련이다. 表示必然会出现某事
- 产品策划二:App启动页的相关
- How to set custom colors in amCharts Column Chart
- 部署时System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
- 模板内部不支持原生js的方法?》》artTemplate模版方法注册window全部事件方法
- (转)解决WINDOWS 程序界面闪烁问题的一些经验
- 历时八年 HTML5标准终于制定完成
- 浅析HTML5的10大优势
- 模板内部不支持原生js的方法?》》artTemplate模版方法注册window全部事件方法