糯米丸&“坑叫兽”之正则表达式及元字符使用  

在介绍正则表达式之前,我们先普及一下,Linux系统下三大文本搜索工具grep、sed、awk。它们各自的作用如下:

grep:grep(支持正则表达式) egrep(支持扩展表达式), fgrep(快捷搜索不支持正则表达      式):文本搜索工具;基于一组筛选条件对给定文本进行搜索操作;

sed:Stream EDitor,流编辑器,行编辑工具;文本编辑工具;(本质是编辑器)

awk:GNU awk,文本格式化工具;文本报告生成器;(文本美化器,可以理解为文字版的美图秀秀)

 正则表达式

“由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意义,而是用于表示控制或通配的功能”,可以理解为用一些特定含义的符号,根据需要进行排列组合,而形成的一串特定含义的筛选规则。
                    例如“性别=不男不女”
                    
                    注意:(默认为贪婪模式,能匹配多少就匹配多少)
                
它的使用方法如下:
grep命令:
        
grep  [OPTIONS]-选项  PATTERN-过滤条件  [FILE...]-作用文件
        
            常用选项:
                --color=auto:给符合要求的文本上色显示;
                -i:不区分字符大小写;
                -o:仅显示符合过滤条件的文本;
                -v, --invert-match:反向匹配;()
                -E:支持扩展的正则表达式;
                -q, --quiet, --silient:静默模式,不输出任何信息;(有时在返回海量数据时,我们仅仅是想查看命令的成、败状态,就用此模式,“你好我也好”)
                
基本正则表达式元字符:(就是代表特定含义的字符)
          字符匹配:

.:匹配任意单个字符;

[ ]:匹配范围内的任意单个字符;

[^ ]:匹配范围外的任意单个字符;

[:digit:]数字

[:lower:]小写字母

[:upper:]大写字母

[:alpha:]所有字母

[:alnum:]所有数字和字母

[:space:]空白字符

[:punct:]标点符号
                        
 匹配次数:
                
*:匹配前面的字符任意次(0,1或多次);

grep "x*y":
xxxyabc
yabc
abcxy
abcy

.*:任意长度的任意字符;
  \+:匹配前面的字符至少1次;

grep "x\+y":
xxxyabc
yabc
abcxy
abcy

\?:匹配前面的0次或1次,即前面的字符可有可无;

grep "x\?y":
xxxyabc
yabc
abcxy
abcy

\{m\}:其前面的字符出现m次,m为非负整数;

grep "x\{2\}y":
xxxyabc
yabc
abcxy
abcy

\{m,n\}:其前面的字符出现m次,m为非负整数;[m,n]
                        \{0,n\}:至多n次;
                        \{m,\}:至少m次;
                        
位置锚定

限制使用模式搜索文本,限制模式所匹配到的文本只能出现于目标文本的哪个位置;
                    
^:行首锚定;用于模式的最左侧,^PATTERN
$:行尾锚定;用于模式的最右侧,PATTERN$
^PATTERN$:要让PATTERN完全匹配一整行;
$:空行;
^[[:space:]]*$:
                        
单词:由非特殊字符组成的连续字符(字符串)都称为单词;
                        
 \<或\b:词首锚定,用于单词模式的左侧,格式为\<PATTERN, \bPATTERN
 \>或\b:词尾锚定,用于单词模式的右侧,格式为PATTERN\>, PATTERN\b
 \<PATTERN\>:单词锚定;

分组与引用:
\(PATTERN\):将此PATTERN匹配到的字符当作一个不可侵害整体进行处理;
                    
Note:分组括号中的模式匹配到的字符会被正则表达式引擎自动记录于内部的变量中,这些变量是\1, \2, \3, ...
                        
pat1\(pat2\)pat3\(pat4\(pat5\)pat6\)
                        
\n:模式中第n个左括号以及与之匹配的右括号之间的模式所匹配到的字符串;(不是模式,而是模式匹配的结果)
                        
\1:第一组括号中的pattern匹配到的字符串;
\2:第二组括号中的pattern匹配到的字符串;
 后向引用:引用前面的括号中的模式所匹配到的字符串;
           
常用选项之二:
-E, --extended-regexp:支持使用扩展正则表达式
-F, --fixed-strings:支持使用固定字符串,不支持正则表达式,相当于fgrep;
-G, --basic-regexp:支持使用基本正则表达式;
-P, --perl-regexp:支持使用pcre正则表达式;
                
-e PATTERN, --regexp=PATTERN:多模式机制;
-f FILE, --file=FILE:FILE为每行包含了一个pattern的文本文件,即grep script;
                
-A NUM, 多现实它的后一行
-B NUM, 多现实它的前一行
-C NUM,  多现实上下各一行
                
egrep:
        
支持使用扩展正则表达式的grep命令,相当于grep -E;
        
egrep [OPTIONS] PATTERN [FILE...]
        
 扩展正则表达式的元字符:
字符匹配:


 .:任意单个字符
 [ ]:范围内的任意单个字符
 [^ ]:范围外的任意单个字符

匹配次数:

*:任意次;

?:0次或1次;

+:1次或多次;

{m}:匹配m次;

{m,n}:至少m次,至多n次;

{0,n}

{m,}

 位置锚定:

^:行首

$:行尾

<, \b:词首

\>, \b:词尾

分组及引用:

(pattern):分组,括号中的模式匹配到的字符会被记录于正则表达式引擎内部的变量中;

后向引用:\1, \2, ...
                或者:

a|b:a或者b

C|cat:表示C或cat

(C|c)at:表示Cat或cat

糯米丸&“坑叫兽”之正则表达式及元字符使用  

时间: 2024-08-05 19:35:06

糯米丸&“坑叫兽”之正则表达式及元字符使用  的相关文章

正则表达式的元字符

利用Perl正则表达式还可以做另一件有用的事情,这就是使用各种元字符来搜索匹配.所谓元字符,就是用于构建正则表达式的具有特殊含义的字符,例如的“*”.“+”.“?”等.在一个正则表达式中,元字符不能单独出现,它必须是用来修饰原子的.如果要在正则表达式中包含元字符本身,使其失去特殊的含义,则必须在前面加上“\”进行转义.正则表达式的元字符如下表所示. 构造正则表达式的方法和创建数学表达式的方法相似,就是用多种元素符与操作符将小的表达式结合在一起来创建更大的表达式.正则表达式的组件可以是单个的字符.

正则表达式(一) -- 元字符(转)

正则表达式括号的作用1.限制多选项的范围 (Fri|1)st 这样写会匹配Frist或1st 如果去掉,则 Fri|1st就是匹配 Fri或1st2.将若干个字符进行组合,受量词的同时作用.例如 th+ 表示匹配 th thh thhh(h无数次),如果是(th)+,则匹配的是th thth ththth(th无数次)3.反向引用,即前面括号匹配到的东西记忆与后面,常用于匹配重复单词.4.分组 常用元字符代码 说明. 匹配除换行符以外的任意字符\w  匹配字母或数字或下划线或汉字\s  匹配任意

正则表达式 \D 元字符

\D元字符可以匹配非数字字符,等价于"[^0-9]". 语法结构: (1).构造函数方式: new RegExp("\\D") (2).对象直接量方式: /\D/ 浏览器支持: (1).IE浏览器支持此方法. (2).火狐浏览器支持此方法. (3).谷歌浏览器支持此方法. (4).opera浏览器支持此方法. (5).safria浏览器支持此方法. 实例代码: var str="I love antzone \n and you 360"; va

正则表达式:元字符(基本可用来匹配的字符)

# 1: 匹配单个字符与数字 . 匹配除换行符以外的任意字符 [0123456789] 是字符集合,表示匹配方括号中所包含的任意一个字符 如[Mia] 匹配'M','i','a'中任意一个字符 [a-z] 匹配任意小写字母 [A-Z] 匹配任意大写字母 [0-9] 匹配任意数字,类似[0123456789] [0-9a-zA-z] 匹配任意的数字和字母,(不分大小写)(不能加空格,否则也匹配空格) [[0-9a-zA-z_] 匹配任意的数字.字母和下划线 [^Mia] 匹配除了'M','i','

常用的操作正则表达式的方法+正则表达式基本元字符使用实例

常用的操作正则表达式的方法: 下面学习一下位于System.Text.RegularExpressions下的Regex类的一些静态方法和委托(只要有一段匹配就会返回true) 1,静态方法IsMatch (返回值是一个布尔类型,用于判断指定的字符串是否与正则表达式字符串匹配,它有三个重载方法) bool IsMatch(string input, string pattern); 参数: input: 要搜索匹配项的字符串. pattern: 要匹配的正则表达式模式. 返回结果: 如果正则表达

Linux正则表达式-定位元字符

有两个元字符用于指定字符串出现在行首或行末.脱字符(^)是指示开始的单字符正则表达式.美元符号($)是指示行结尾的单字符的正则表达式.这些通常称为"定位符",因为它们将匹配限定在特定位置.例如,可以使用以下表达式打印以First开始的行: ^First 没有^元字符,这个表达式将打印包含First的任意行. 通常,使用VI输入要由troff处理的文本,并且不想让空格出现在行的结尾.如果想找到(并删除)它们,下面的正则表达式可以匹配在结尾处有一个或多个空格的行: □□*$ Troff请求

正则表达式所有元字符及特殊字符

字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 后向引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "(". ^ 匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置. $ 匹配输入字符串的结束位置.如果设置了RegExp 对象的 Mul

正则表达式之元字符

1.什么是正则表达式? 官方解释正则表达式是描述一组字符串的模式,正则表达式类似算数表达式构造,通过使用各种特殊符号组合来表示一组字符串. 2.元字符 元字符 描述 示例 . 匹配任意单个字符 a.:匹配a开头任意字符结尾 * 匹配紧挨在前面的字符任意次(0,1或无限次) a*:匹配a多次 .* 匹配任意长度的任意字符 a.*:a开始任意长度的行 ^ 行首定位符 ^root:root开头的行 $ 行尾定位符 root$:root结尾的行 [] 匹配指定范围内的任意单个字符 [abc]:匹配a或b

正则表达式三-元字符

元字符 元字符(Metacharacter)是拥有特殊含义的字符: 元字符 描述 . 查找单个字符,除了换行和行结束符. \w 查找单词字符. \W 查找非单词字符. \d 查找数字. \D 查找非数字字符. \s 查找空白字符. \S 查找非空白字符. \b 查找位于单词的开头或结尾的匹配. \B 查找不处在单词的开头或结尾的匹配. \0 查找 NUL 字符. \n 查找换行符. \f 查找换页符. \r 查找回车符. \t 查找制表符. \v 查找垂直制表符. \xxx 查找以八进制数 xx