第3章 正则表达式1

1.正则表达式基础

正则表达式:由一串字符和元字符构成的字符串,简称RE(Regular Expression),主要功能是文本查询和字符串操作。

元字符(metacharacters):用来阐释字符表达式意义的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。

注:a、b、2等字符属于普通字符,普通字符可以按照字面意思理解,如:a只能理解为英文的小写字母a,没有其他隐藏含义。而*、^、[]等元字符,Shell赋予了它们超越字面意思的意义,如:*符号实际上却表示了重复前面的字符0次或多次的隐藏含义。

上图描述了正则表达式用于数据流处理的过程,完成数据过滤,将不满足正则表达式的数据拒绝掉,剩下与正则表达式匹配的数据。

2.正则表达式中元字符集合及其意义:


符号


意义


*


0个或多个在*字符之前那个普通字符


.


匹配任意字符


^


匹配行首,或后面字符的非


$


匹配行尾


[]


匹配字符集合


\


转义符,屏蔽一个元字符的特殊意义


\<\>


精确匹配符号


\{n\}


匹配前面字符出现n次


\{n,\}


匹配前面字符至少出现n次


\{n,m\}


匹配前面字符出现n次与m次之间

1 *符号

hel*o: *符号前面的普通字符是l,*字符就表示匹配l字符0次或多次,如字符串helo、hello、hellllllo都可以由hel*o来表示

2 .符号

…73.表示前面三个字符为任意字符,第4和第5个字符是7和3,最后一个字符为任意字符,如xcb738、4J973U都能匹配上述字符串

3 ^符号

^cloud表示匹配以cloud开头的行

4 $符号

micky$表示匹配以micky结尾的所有行

^$ 表示空白行

5 []匹配字符

[a-]匹配所有小写字母

[^a-c]匹配不在a~c中的所有字符(^在此表示取反)

6 \符号

\.

7 \<\>符号

\<the\> 精确匹配单词the,them, they等不匹配

8 \{\}系列符号

\{n\}:匹配前面字符出现n次,如 JO\{3\}B 匹配JOOOB

\{n,\}:匹配前面字符至少出现n次,如JO\{3,\}B匹配JOOOB、JOOOOB、JOOOOOB等字符串

\{n,m\}:匹配前面字符出现n次与m次之间,如JO\{3,6\}B匹配JOOOB、JOOOOOOB等字符串

[a-z] \{5\}:匹配5个小写英文字母,比如hello、house等

3.正则表达式的扩展


符号


意义


?


匹配0个或1个在其之前的那个普通字符


+


匹配1个或多个在其之前的那个普通字符


()


表示一个字符集合或用在expr中


|


表示“或”意义,匹配一组可选的字符

1 ?符号

JO?B匹配O字符0次或1次,即JOOB,JOB

2 +符号

S+EU匹配S1次或任意次,如SSEU,SSSSEU。但不能SEU

3 () 和|字符

r(e|a)d表示在字符e,a选择任意一个,即red、rad

3.通配

1. 通配(globbing)是:把一个包含通配符的非具体文件名扩展到存储在计算机、服务器或者网络上的一批具体文件名的过程。

2. 最常用的通配符包括正则表达式元字符:?、*、[]、{}、^等,通配符与元字符意义不完全相同:

  • *符号不再表示其前面字符的重复,而是表示任意位的任意字符;
  • ?字符表示一位的任意字符;
  • ^符号在通配中不代表行首,而是代表取反意义。

ls -l *.awk表示列出以.awk结尾的文件的信息;

ls -l 0?.pem表示列出以0开头、后面为一个字符且结尾为.pem的文件信息;

ls -l [a-h]*.[^awk]*表示列出以a~h开头,不以.awk结尾的文件。

时间: 2024-08-09 02:16:27

第3章 正则表达式1的相关文章

鸟哥的linux私房菜——第12章 正则表达式与文件格式化处理

12.1什么是正则表达式 正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找.删除.替换某特定字符串的处理程序. vi.grep.awk.sed支持正则表达式,而cp,ls等命令只能使用bash自身的通配符 12.2基础正则表达式 grep高级参数: grep [-A] [-B] [--color=auto]  'string'   filename -A:after的意思,除了列出该行外,后续的n行也列出来 -B:be

第12章 正则表达式与文件格式化处理

基础正则表达式 语系对正则表达式的影响 不同语系下,字符的编码数据可能不同. LANG=C:012……ABC……abc…… LANG=zh_CN:012……aAbB…… 因此,使用[A-Z]时,搜索到的字符也不一样. 特殊符号 代表意义 [:alnum:] 大小写字符及数字,0-9,A-Z,a-z [:alpha:] 英文大小写字符 [:blank:] 空格键与tab键 [:cntrl:] 控制按键,CR,LF,TAB,DEL等 [:digit:] 代表数字 [:graph:] 除空格符(空格和

Python for Informatics 第11章 正则表达式(一)

目前为止,我们一直在通读文件,查找模式和抽取字里行间我们感兴趣的各种信息.我们一直在使用像split和find的字符串方法,以及列表和字符串的切割功能来抽取行中的部分内容. 像这样的查找和抽取任务是如此常见,所以Python拥有一个非常强大的库——正则表达式(regular expressions)来优雅地处理这些任务.我们未早一点介绍正则表达式是因为,虽然它们很强大,但是有点复杂,并且需要一些时间去适应它们的语法. 正式表达式近乎是一个用来查找和分析字符串的小型编程语言.事实上,关于正则表达式

《python核心编程》读书笔记--第15章 正则表达式

15.1引言与动机 处理文本和数据是一件大事.正则表达式(RE)为高级文本匹配模式,为搜索-替换等功能提供了基础.RE是由一些字符和特殊符号组成的字符串,它们描述了这些字符和字符串的某种重复方式,因此能按某种模式匹配一个有相似特征的字符串的集合,也就是说,一个只能匹配一个字符串的RE是无聊的.

第10章 正则表达式

假设用户需要在HTML表单中填写姓名.地址.出生日期等.那么在将表单提交到服务器进一步处理前,JavaScript程序会检查表单以确认用户确实输入了信息并且这些信息是符合要求的.   一.什么是正则表达式 正则表达式(regular expression)是一个描述字符模式的对象.ECMAScript的RegExp类表示正则表达式,而String和RegExp都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数. 正则表达式主要用来验证客户端的输入数据.用户填写完表单单击按钮之后,表单

Python for Informatics 第11章 正则表达式(四)

注:以下文章原文来自于Dr Charles Severance 的 <Python for Informatics> 11.3 组合查询和抽取 如果我们想以“X-”字符串开头的行中找到数字,就像下面两行字符串: X-DSPAM-Confidence: 0.8475X-DSPAM-Probability: 0.0000 但我们不只是要任意行中的任意浮点数,而是具备上面格式的行中的数字. 我们可以创建以下正则表达式来选择这样的行: ^X-.*: [0-9.]+ 这个表达式的含义是以“X-”两个字符

第六章 正则表达式

1,if匹配 if($regu =~ m/expression/){ } #正则表达式m可省略,也可使用$_, 即if(/expression/), 相当于$regu = $_; 省略匹配符=~ 和 m 2, 匹配+ &&print if($line=~m" \b(\w+)\b"){print "$l\n";} 等同于:($line=~m" \b(\w+)\b")&&(print " $l\n"

Python for Informatics 第11章 正则表达式(二)

忙碌一天,晚上终于有静下来的时间,继续昨天的工作. 11.1 正则表达式的字符匹配 我们可以用许多其它的特殊字符创建更加强大的正则表达式.最常用的特殊符号是可匹配任何字符的句号(".").在以下的示例中,正则表达式”F..m:“将匹配”From:”,“Fxxm:",”F12m:“,或者”[email protected]:“等类似字符串,因为表达式中间的句号可匹配任何字符. 1 import re 2 hand = open('mbox-short.txt') 3 for l

第十一章 正则表达式

11 正则表达式 符合一定规则的表达式. 1.作用 用于专门操作字符串. String中提供了matches(String regex)方法,用于通知此字符串是否匹配给定的正则表达式. 2.特点 用一些特定的符号,来表示一些代码操作,这样就简化了书写. 3.好处 可以简化对字符串的复杂操作. 4.弊端 符号定义越多,正则表达式越长,阅读性越差. 5.对QQ号码进行校验,5-15位,只能是数字. public class QQ { public static void main(String[]