JAVA正则表达式PPT课件(参考)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.特殊的标点符号
正则表达式中使用特殊的标点符号,必须在它们之前加上一个 "\" 转异
/ \ . * + ? | () { } [ ]
如: /\?/ 匹配"?"
字符类 (直接量的'或'集合)
1. 单独的直接符放进中括号内就可以组合成字符类.一个字符类和它所包含的 任何一个字符都匹配 如: /[a-z] / 匹配小写字母
• 正则表达式匹配过程中,如果子表达式匹配到的是字符内容,而非位置,并被保存到最终 的匹配结果中,那么就认为这个子表达式是占有字符的;如果子表达式匹配的仅仅是位置, 或者匹配的内容并不保存到最终的匹配结果中,那么就认为这个子表达式是零宽度的。
占有字符还是零宽度,是针对匹配的内容是否保存到最终的匹配结果中而言的。 占有字符是互斥的,零宽度是非互斥的。也就是一个字符,同一时间只能由一个子 表达式匹配,而一个位置,却可以同时由多个零宽度的子表达式匹配。
置组号
匹配abcd或者abcabcd
匹配pattern并捕获结果,设置 name为组名
对捕获组的反向引用。其中 num (\w)(\w)\2\1
是一个正整数。
匹配abba
对命名捕获组的反向引用。其中 (?<group>\w)abc\k<group>
name 是捕获组名。
匹配xabcx
非捕获组(零宽断言)
/\s+java\s+/ 匹配字符串"java" ,并且该串前后可以有一个 或多个空格.
复制
源自文库
选择(分支)
• 当一个字符串的某一子串具有多种可能时,采用分支结构来匹配,“|”表示多个子表达 式之间“或”的关系,“|”是以()限定范围的,如果在“|”的左右两侧没有()来限定范 围,那么它的作用范围即为“|”左右两侧整体。
它不捕获文本,也不针对组合计进行计数。就是说,如果小括号中以?号开头,那么这 个分组就不会捕获文本,当然也不会有组的编号,因此也不存在Back 引用。 (?:pattern) 匹配pattern但不获取匹配结果;例:“industr(?:y|ies)”就是一个比 “industry|industries”更简略的表达式。
正则表达式的组成
• 正则表达式由一些普通字符和一些元字符(metacharacters)组成。 • 普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。 • 在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。例如,正则表达式
"testing"中没有包含任何元字符,它可以匹配"testing"和"123testing"等字符串,但是不 能匹配"Testing"。 • 要想真正的用好正则表达式,正确的理解元字符是最重要的事情。
(?=exp) 零宽度正预测先行断言,它断言自身出现的位置的后面能 匹配表达式exp
JAVA正则表达式
汇报人:某某某
正则表达式的定义和作用
定义:正则表达式是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串。 作用:测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在 该字符串 是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有 效性验证 替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部 将其删除,或者替换为别的文字 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查 找特定文字
描述相同匹配规则的零个、一个或多个正则表达式的复制字符。 • {n, m} 匹配前一项至少n次,但是不能超过m次 • {n, } 匹配前一项n次,或者多次 • {n} 匹配前一项恰好n次 • ? 匹配前一项0次或1次,也就是说前一项是可选的. 等价于 {0, 1} • + 匹配前一项1次或多次,等价于{1,} • * 匹配前一项0次或多次.等价于{0,} 如:/\d{5}/ 匹配五位整数
指定匹配的位置
• ^ 匹配的是字符的开头,在多行检索中,匹配的是一行的开头 • $ 匹配的是字符的结尾,在多行检索中,匹配的是一行的结尾 • \b 匹配的是一个词语的边界.简而言之就是位于字符\w 和 \w之间的位置(注意:[\b]匹配的
是退格符) • \B 匹配的是非词语的边界的字符
占有字符和零宽度
举例: “^aa|b$”在匹配“cccb”时,是可以匹配成功的,匹配的结果是 “b”,因为这个表达 式表示匹配“^aa”或“b$”,而“b$”在匹配 “cccb ”时是可以匹配成功的。 “^(aa|b)$”在区配“cccb”时,是匹配失败的,因为这个表达式表示在“开始”和“结 束”位置之间只能是“aa”或“b”,而“cccb”显然是不满足的。
2. 还可以定义否定字符类,这些类匹配的是除那些包含在中括号之内的字符外 的所有字符 如:/ [^a-z]/ 匹配除小写字母之外的全部字符
3.由于某些字符类非常常用,所以正则表达式语法包含一些特殊字符和转义序 列来表示这些常用的类.
例: . 除了换行符之外的任意字符,等价于[^\n] \w 任何单字字符, 等价于[a-zA-Z0-9_] \W 任何非单字字符,等价于[^a-zA-Z0-9_] \s 任何空白符,等价于[\ t \ n \ r \ f \ v] \S 任何非空白符,等价于[^\ t \ n \ r \ f \ v] \d 任何数字,等价于[0-9] \D 除了数字之外的任何字符,等价于[^0-9] [\b] 一个退格直接量(特例)
捕获组
• 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或 其它程序中作进一步的处理
字符 (pattern) (?<name>pattern) \num \k< name > 或 \k’name ‘
描述
例子
匹配pattern并捕获结果,自动设 (abc)+d
直接量字符
1.字母数字字符 自身 2.转异字符
\ f 换页符 \ n 换行符 \ r 回车 \ t 制表符 \ v 垂直制表符
直接量字符
\ XXX 由十进制数 XXX 指 定的ASCII码字符
\ Xnn 由十六进制数 nn 指定的ASCII码字符
\ cX X是一个控制符,/\cM/匹配Ctrl-M