内容正文:
课程名称
第6章 正则表达式
计划学时
4学时
内容分析
本章主要介绍正则表达式概念、正则表达式元字符、正则表达式语法、正则表达式运算符优先级、正则表达式匹配规则、grep命令
教学目标
与
教学要求
要求学生了解正则表达式概念,熟悉正则表达式元字符,掌握正则表达式语法,熟练正则表达式运算符优先级,掌握正则表达式匹配规则,掌握正则表达式应用方法
教学重点
正则表达式元字符、正则表达式语法、正则表达式运算符优先级、正则表达式匹配规则、grep命令
教学难点
正则表达式元字符、正则表达式语法、正则表达式运算符优先级、正则表达式匹配规则、grep命令
教学方式
课堂讲解及ppt演示
教
学
过
程
第一课时
(正则表达式概念、正则表达式元字符、正则表达式语法、正则表达式运算符优先级、正则表达式匹配规则)
回顾内容,引出本课时主题
1. 回顾内容,引出本课时主题。
上面两节学习了Shell编程中函数的用法相关内容,本节开始正则表达式的相关内容讲解。正则表达式(Regular Expression,在代码中常简写为regex、regexp或 RE),又称规则表达式。正则表达式就是处理字符串的方法,以行为单位进行字符串的处理,通过一些特殊符号的辅助,让用户达到查找、 删除、替换等目的。例如,Perl 就内建了一个功能强大的正则表达式引 擎。正则表达式这个概念最初是由 UNIX 中的工具(如sed和grep)普 及开的。正则表达式通常缩写成regex,单数有regexp、regex,复数有regexps、regexes、regexen。 本节着重讲解正则表达式概念、正则表达式元字符、正则表达式语法、正则表达式运算符优先级和正则表达式匹配规则,从而引出本节的内容。
2. 明确学习目标
(1) 能够理解正则表达式概念
(2) 能够熟悉正则表达式元字符
(3) 能够理解正则表达式语法
(4) 能够理解正则表达式运算符优先级
(5) 能够掌握基本模式匹配
(6) 能够掌握字符簇
知识讲解
· 正则表达式概念
正则表达式是对字符串进行操作的一种逻辑公式,就是用事先定义好的一些特定字符,组成一个“规则字符串”,用这个“规则字符串”来 完成对字符串的一种过滤操作。
正则表达式用于在查找过程中匹配指定的字符。在大多数程序里,正则表达式都被置于两个正斜杠之间,例如,/I[oO]ve/就是由斜杠界定的正则表达式,斜杠匹配被查找的行中任何位置出现的相同内容。在正则表达式中,元字符是重要的概念。
· 正则表达式元字符
正则表达式由普通字符和元字符(Metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。元字符表达的是不同于字面本身的含义。元字符通常由各种执行模式匹配操作的程序(如 vi、grep、sed、awk、python)来解析,下面会给予解释。
在最简单的情况下,一个正则表达式看上去就是一个普通的查找模式。例如,正则表达式 “testing”中没有包含任何元字符,它可以匹配“testing”和“testing123”等字符串,但不能匹配 “ Testing ”。
想真正用好正则表达式,正确理解元字符是很有必要的。元字符描述如表所示。
元字符
描述
\
将下一个字符标记符、或一个后向引用、或一个八进制转义符。例如,“\
”匹配
。“
”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“)”。即相当于多种编程语言中都的“转义字符”的概念。例如:love\.
^
匹配输入字行首。例如:^love,如果设置了RegExp对象的Multiline属性,^也匹配“
”或“\r”之后的位置。
$
匹配输入行尾。例如:love$,如果设置了RegExp对象的Multiline属性,$也匹配“
”或“\r”之前的位置。
*
匹配前面的子表达式任意次。例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。*等价于{0,}
+
匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
?
匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”。?等价于{0,1}
{n}
n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,}
n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m}
m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配