`
younglibin
  • 浏览: 1207631 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ubuntu - 正则表达式

阅读更多

正则表达式

相信只要接触过一种语言 不管是什么语言,那么都会或多或少的接触使用过正则表达式,我的理解就是正则表达式是能够表达特定格式的特殊的字符串。

语系对正则表达式的影响。 LANG=C 时,编码顺序是1,2,3.....A,B,C,D.....Z,a,b,c,d....z 当LANG=zh_CN时,编码顺序为1,2,3.....A,a,B,b,C,c....Z,z相信你已经看出来区别了, 之前我们说过LANG 是环境变量 要查看很简单 , echo $LANG 就行了,要改变 直接LANG=C就ok

特殊符号 代表意义

[:alnum:]

代表英文大小写字母及数字,即 0-9,A-Z,a-z

[:alpha:]

代表任何英文字母, 即 A-Z,a-z
[:blank:] 代表键盘上tab键

[:digit:]

代表数字,即0-9

[:grapha:]

除空格和tab键外的其他按键字符

[:lower:]

代表任何小写字母
[:print:] 代表任何可被打印出来的字符

[:punct:]

代表标点字符 即:" ' ? ! ; # $
[:upper:] 代表任何大写字母

[:space:]

代表任何可以产生空格的字符包括 tab 和CR等

[:xdigit:]

代表十六进制的数字类型, 因此它是 0-9,A-F,a-f

[:cntrl:]

代表键盘上的控制字符 , 包括 CR, LF , Tab, Del等

上面的表 听说在正则表达式中 和99乘法表在数学中拥有同样地位的东西, 需要死记硬背下来的 其实很简单的。

因为Linux中的很多工具都是可以使用正则表达式的, 所以我们需要在平常的工作学习中 多用正则表达式, 学过程序的同学应该都知道正则表达式在程序中占有怎样的位置的。

拿grep命令来说, 我用的最多的就是和find命令的组合使用, 因为经常需要查找某个字符串在那些文件中有, 这样写的 find -name *.java -exec grep -Hn "Hello world" {} \;

后面的“{} \;”是一种格式, 我到现在都不知道为什么要那些东西, 不过不用的话这条命令都是错的,

grep [-A] [-B] [-iHn] [--color=auto] "搜索的字符串" filename

-A 表示after 意思是 出去查找到的行把它之后的几行也列出来

-B 表示 befer 意思是 除去查找到的行,把它之前的几行也列出来

我的机子上默认查找到的东西是有颜色的, 这是为什么咧, alias | grep “grep” 就知道了 , 原来在~/.bashrc 中有这么一句话 alias grep = ‘grep --color=auto’ 如果你查找到的东西没有颜色,那么就在你的~/.bashrc中添加上, 然后 source ~/.baserc

------------------------------------------------------

这几天的练习我会使用鸟哥的一个资源 http://linux.vbird.org/linux_basic/0330regularex/regular_express.txt 直接下载

(再说一次我这个是边看鸟哥的书边在记笔记,可能和书上没区别的,如果想好好学呢 ,还是和我一样去买一本鸟哥吧)

我们还需要配置一下vim。 输入vim ~/.vimrc

在里面写入 set nu 回车 set hlsearch ,就够了, set nu表示显示行号, set hlsearch 表示高亮显示查找 , 如果需要取消 删掉 ~/.vimrc

1.一般查找 , 很简单 , 输入 grep -n “the” regular_express.txt 试试, 记得grep工具的 反向选择 -v就是不包含输入字符串的。-i 表示不区分大小写

2.现在来点简单的正则表达式练习, 查找 test 和 tast的行呢, 这里可以使用正则表达式了, 中括号里面的表示有且只有一个, 刚才那个就是 grep -n "t[ea]st" regular_express.txt . 如果是test前没有a呢 ,需要使用 ^ 这个符号了, 就是 grep -n "[^a]test" regular_express.txt 如果要查找 test 但是要求他前面不能有大写字母该怎么办嫩, 如果是在LANG=C下面呢可以这样 grep -n "[^A-Z]test" regular_express.txt. 如果实在LANG=zh_CN下就不能这样了 , 因为A-Z 也包括了小写字母这里就可以使用刚才说的必须背的东西了 grep -n “[^[:upper:]]test” regular_express.txt 这样的命令呢可以直接不考虑语言环境的使用 是不是很爽阿,


上面有两个符号 “-” "^" 横杠表示连续的编码字符,比如 a-z表示a到z的所有小写字母 当然这个要看语系的, “^” 表示非, 就是相反的意思拉,这里个符号在中括好里面是这个意思拉, 出了中括号就不知道了。

3. 行首与行尾符 “^$”,^出了中括号就表示成行首了, 如果我要查找以a开头的行,就是 grep -n "^a" regular_express.txt "鸟哥还喜欢吃苹果。。 我以为鸟哥都不食人间烟火了呢" 行尾符就是 “$” , 查找以a结尾的行呢。 这里注意了是 grep -n "a$" regular_express.txt 。。a在前面, 刚才我以为是$a自以为正确 结果输入进去全都出来了,去,,!

这里要注意了,在 MS下面的换行符是“^M$”, 而Linux的换行符是“$” , 空白行怎么找呢 一行里面只有行首和行尾 就是空白行了 “^$” . grep -v 反向选择很有用的哦

4.任意一个字符 . , 和重复字符* ,这里的*有点难以理解,表示的是重复0个或多个前面的RE字符, o* 表示的是 具有空字符或一个o以上的字符, 如果你要查找至少两个oo应该是 ooo*, 记住*只是前面一个符号 所以 ooo* 应该这样看 oo+o* 就是oo后面接了0个或多个o, (搞半天呢。。。)

分享到:
评论

相关推荐

    Python正则表达式操作指南%2B-%2BUbuntu中文.pdf

    ### Python正则表达式操作指南知识点详解 #### 1. 简介 - **re模块**: Python自1.5版本起引入了`re`模块,该模块支持Perl风格的正则表达式模式。与之前的`regex`模块提供的Emacs风格相比,`re`模块更加功能强大且...

    一款可调式生成正则表达式的软件!

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。在IT行业中,熟练掌握正则表达式是程序员和系统管理员的重要技能之一。"一款可调式生成...

    正则表达式--强大的文本匹配工具 中文入门

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,它是计算机科学中一个强大的文本处理工具,尤其在数据处理、文本分析和搜索替换等场景中有着广泛的应用。正则表达式不仅可以用于简单的...

    GNU regex 正则表达式 修正版

    GNU regex正则表达式修正版是对原GNU regex 0.13版本的改进,主要解决了在编译过程中出现的大批量警告错误。这个修正版不仅优化了源代码,提高了代码质量,还增强了其兼容性,使其能够顺利在Windows和Linux两大操作...

    RegexBuddy 正则表达式工具

    RegexBuddy3.4 最新版正则表达式工具, 绿色安装版,用于调试,编写,学习正则表达式 非常优秀, 可以到www.veege.net下载

    python正则表达式

    通过阅读《Python正则表达式详解.doc》和《Python正则表达式操作指南+-+Ubuntu中文.pdf》这两份文档,你可以更深入地了解正则表达式的各种高级特性和在不同场景下的应用。同时,《说明.txt》可能包含了一些练习或...

    sublime-filterlines, 快速查找匹配字符串或者正则表达式的所有行.zip

    sublime-filterlines, 快速查找匹配字符串或者正则表达式的所有行 过滤线快速查找匹配字符串或者正则表达式的所有行。在编辑> 行菜单上:使用 正规表达式 排除行排除带字符串的行在编辑> 代码折叠菜单上:折叠不包括...

    bash 中用于grep的正则表达式

    正则表达式是一类用于匹配文本的表达方式,常用于grep命令中表达检索条件。其实就是相当于你在用百度搜索时规定一些高级要求,例如你想找百度一个叫做詹姆斯的人的照片,你会发现出来一大堆骑士队的詹姆斯,这时候你...

    Python编程实战 运用设计模式、并发和程序库创建高质量程序

    例如,Ubuntu中文的Python正则表达式操作指南就是一个对初学者友好的资源,它涵盖了从字符匹配、重复模式到正则表达式的更多功能,以及如何修改字符串等基础知识。 需要注意的是,本文档的获取来源于OCR扫描技术,...

    Linux入门(Ubuntu)之文本三剑客(grep)与正则表达式

    egrep是grep的扩展,支持更多的re元字符,fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义。 在关键字的显示方面,grep 可以使用 –color=auto...

    libpaspcre2:libPasPCRE2 是与 Perl 兼容的正则表达式库 (PCRE2) 的 delphi 和 object pascal 绑定。 库是一组使用与 Perl 5 相同的语法和语义来实现正则表达式模式匹配的函数

    libPasPCRE2 libPasPCRE2 是与 Perl 兼容的正则表达式库 (PCRE2) 的 delphi 和 object pascal 绑定。 库是一组使用与 Perl 5 相同的语法和语义来实现正则表达式模式匹配的函数。目录要求 (可选) 库经过测试Windows...

    正则表达式中的反向预搜索实现

    OS: Ubuntu 9.04’; var reg3 = /Memory\:\s+(.*(?=\;OS\:))/gim; str3.match(reg3); alert(RegExp.$1); //结果是2G [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行](.*(?=\;OS\:) 就是典型的正向预搜索,...

    前端开源库-oniguruma

    1. **多语言支持**:Oniguruma支持多种正则表达式语法,包括Perl兼容的正则表达式(PCRE)和Ruby风格的正则表达式。 2. **高效性能**:Oniguruma采用优化的算法,确保在处理大量文本时依然保持快速的匹配速度。 3....

    Python 正则表达式操作指南

    原文作者:A.M. Kuchling (amk@amk.ca) 授权许可:创作共享协议 翻译人员...正则表达式操作指南#.E7.BC.96.E8.AF.91.E6.AD.A3.E5.88.99.E8.A1.A8.E8.BE.BE.E5.BC.8F目录 目录[隐藏] 1 简介 2 简单模式 2.1 字

    label-regex:Github动作将标签置于字段和正则表达式上

    `configuration-path`参数指定了包含正则表达式规则的文件路径,该文件通常包含多个规则,每个规则定义了匹配的正则表达式、操作(添加或移除标签)、以及要应用的标签列表。 在`.github/label-regex.yml`配置文件...

    Nginx Linux_ubuntu离线安装包

    PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,是nginx必需的依赖。 nginx使用zlib对http包的内容进行gzip。 OpenSSL 是一个...

    pcre-8.10.zip

    PCRE是一个开源的库,它实现了Perl风格的正则表达式功能,广泛应用于各种编程语言和软件项目中,包括Linux系统配置。下面将详细介绍PCRE库以及如何在Linux环境下使用它。 **PCRE库详解** 1. **PCRE概念**: PCRE是...

    dict_exclude:要排除正则表达式的 postgresql 字典

    概述dict_exclude 是一个 postgresql 扩展,它提供了一个字典,可用于基于正则表达式创建停用词。 在撰写本文时,它似乎是实现此目标的一个不错的解决方案,但它没有在文本搜索中使用停用词功能,从而有效地创建了一...

    pcre2 version:10.39

    PCRE2(Perl Compatible Regular Expressions version 2)是一个开源库,提供了与Perl语言兼容的正则表达式功能。这个库被广泛用于多种编程语言和应用程序中,包括Apache HTTP服务器,因为它提供了强大的文本模式...

Global site tag (gtag.js) - Google Analytics