




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章XML与正则表达式,正则表达式(RegularExpression)处理文本和模式匹配问题实用、高效,因此XML也引入了对正则表达式的支持。本章将着重讲述正则表达式在XML中的应用。,8.1正则表达式在XML中的应用,正则表达式可以用于指定字符串模式。在XML范畴内,主要使用在以下几个方面。XMLSchemaXPath2.0XSLT2.0,8.1.1在XMLSchema中的应用,正则表达式可以在验证时,指定字符串匹配模式。以下示例代码演示了正则表达式的使用。上面的代码定义了一个匹配模式“a-z30-93”。以下代码所示的元素可以通过验证。abc123,8.1.2在XPath2.0中的应用,正则表达式可以用于XPath2.0中三个函数matches(),replace()和tokenize()。以下XSLT代码中使用了这三个函数。代码说明:matches(2007-03-01,d4-d2-d2)将返回true。replace(2007-03-01,(d4)-(d2)-(d2),$2/$3/$1)将返回字符串“03/01/2007”。tokenize(2007-03-01,-)将返回序列(2007,03,01)。,8.1.3在XSLT2.0中的应用,正则表达式在XSLT2.0的应用主要是在元素中。以下示例代码演示了正则表达式在该元素中的使用。non-letter,8.2XML正则表达式简介,许多编程语言都支持正则表达式。尽管这些语言中的正则表达式基本结构一样,但是其语法并不完全相同。XML正则表达式与Perl中正则表达式十分相似。事实上,XML正则表达式正是以Perl正则表达式为蓝本来定义的。本节将简要讲述XML正则表达式的基本语法结构。,8.2.1元字符和普通字符,正则表达式的定义是以字符为基本单位的。字符又可以分为元字符和普通字符两类。元字符是指在正则表达式中表示特殊含义的字符。元字符包括“.”、“”、“?”、“*”、“+”、“|”、“”、“”、“”、“$”、“”、“”。普通字符是指除元字符外的所有Unicode字符。普通字符匹配其本身,当然如果在使用时,flags标志含有“i”,那么普通字符还可以匹配其大写或小写形式。元字符中的“.”用于匹配任何单字符(除换行符外)。当flags标志含有“s”时,“.”将匹配包括换行符在内的所有字符。元字符“”和“$”用于匹配输入字符串的开始和结束。默认情况下,这里的开始和结束是指整个字符串的开头和结尾。当flags标志含有“m”时,整个字符串在换行符处,被看做一行的结束,在换行符的下个字符处,看做另一行的开始。例如,正则表达式“The”,可匹配字符串“The”;正则表达式“doc$”,匹配字符串“doc”。,8.2.2量词,量词用来指定字符出现次数。量词的形式主要有“?”、“*”、“+”、“”。元字符“?”作为量词出现,用来匹配0个或1个字符。例如A?,表示0个或一个字符“A”。元字符“*”作为量词出现,用来匹配0个或多个字符。例如A*,表示0个或多个字符“A”。元字符“+”作为量词出现,用来匹配1个或多个字符。例如A+,表示1个或多个字符“A”。元字符“”和“”作为量词出现,用来匹配指定个数的字符,其形式有三种情况。,8.2.3字符转义与字符类,元字符在正则表达式中有特殊含义。如果需要使用其原义,则需要用到字符转义。字符转义使用字符“”来实现。其语法模式为:“”+元字符。例如,“.”表示普通字符“.”;“.xml”匹配字符串“.xml”;而普通字符“”需要使用“”来表示。字符类是可选的字符集合。字符转义是实现字符类的一种模式。字符转义实现的字符类可以分为两类,一类为单字符匹配,另一类为多字符匹配。单字符匹配是指字符集合中仅含有一个字符,而多字符匹配是指字符集合中含有多个字符。,单字符匹配有以下几种。“n”,用于匹配换行符(x0A)。“r”,用于匹配回车符(x0D)。“t”,用于匹配制表符(x09)。元字符“.”、“”、“?”、“*”、“+”、“|”、“”、“”、“”、“$”、“”、“”可加分别加前缀字符“”来实现转义,表示字符本身。多字符匹配有以下几种。“s”,用于匹配空白符。正如前面所说,空白符包括空格(x20)、制表符(x09)、回车符(x13)、换行符(x0A)。“i”,用于匹配可作为XML元素和属性名称中第一个字符的字符。包括所有的字母字符、“:”和“_”。例如,matches(_,i)将返回true,而maches(?,i)将返回false。“c”,用于匹配可作为XML命名规范的字符,或者说可用于XML元素或属性名称的字符。例如,matches(.,c)将返回true,而matches(,c)将返回false。“d”,用于匹配数字。例如,matches(1,d)将返回true,而matches(a,d)将返回false。“w”,用于匹配可用作组成单词的字符。例如,matches(Z,w)将返回true,而matches(?,d)将返回false。,以上字符类均为XML正则表达式内置的字符集合。除此之外,还可以使用“”来自定义字符类。例如,az可用于匹配字符a或z,a-z用于匹配字符“a”到字符“z”的任意字符,a-z0-9用于匹配字符“a”到字符“z”或字符“0”到字符“9”中的任意字符。“”实际上定义了某个范围内的字符。如果需要表示该范围之外的字符集合,可以使用字符“”。例如,az可用于表示除“a”到“z”之外的所有Unicode字符。需要注意,这里的“”与行首匹配符“”的区别。行首匹配符必须出现在正则表达式的开头,而表示补集的“”必须出现在“”之内。,8.2.4字符组的使用,XML的正则表达式中还可以利用“()”来对正则表达式分组。可以使用量词来修饰分组,这极大地扩展了正则表达式的功能。例如,“Hello,Hello,World”可以匹配正则表达式“(Hello,)2”。在XPath的函数中可以使用$1、$2、$3$n来引用与相应分组匹配的字符串。例如,replace(1234dd,(d4)(w2),$2$1)将返回字符串“dd1234”。在XSLT2.0元素中,可以利用函数regex-group()来引用分组。以下代码为一个示例程序片段。,8.2.5正则表达式分支,可以利用“|”来创建多个正则表达式分支。例如,“d4|w4”可以看做两个正则表达式“d4”和“w4”,匹配其中任何一个正则表达式的字符串都被认为匹配整个正则表达式。如果该字符串两个正则表达式分支都匹配,那么将被处理为匹配第一个正则表达式分支。,小结,本章讲述了XML正则表达式的基础知识。XML正则表达式是基于Perl正则表达式的原型,但跟Perl的正则表达式又不完全相同。尤其要注意的是XML正则表达式增加了两个自己的字符类“i”和“c”。XML正则表达式可用于XMLSchema、Xpath2.0和XSLT2.0。对于Xpath2.0和XSLT2.0来说,虽然只有少数几个函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025四川成都成华区跳蹬河社区卫生服务中心招聘2人考试模拟试题及答案解析
- 2025广东河源紫金县殡仪馆招聘编外人员2人笔试模拟试题及答案解析
- 2025年安徽泰康教育投资有限公司招聘19人考试参考题库附答案解析
- 2025西安高新区第六高级中学招聘(2人)考试参考题库附答案解析
- 2025通辽科区胡力海卫生院招聘笔试备考题库及答案解析
- 2025年银川市第二十四中学体育教师招聘笔试模拟试题及答案解析
- 2025四川内江隆昌市黄家镇桂花井幼儿园见习岗位需求1人考试参考题库附答案解析
- 2025四川甘孜州能源发展集团有限公司招聘1人笔试模拟试题及答案解析
- 2025安徽宜秀区国有企业招聘工作人员17人笔试模拟试题及答案解析
- 2025四川成都铁路运输法院系统招聘聘用制审判辅助人员30人考试模拟试题及答案解析
- 子宫腺肌症教学护理查房
- 操作手册/西门子/软件/Simotion Programming-MCC
- DBJ53T-44-2021云南省建筑工程资料管理规程
- 中国可见光通信项目创业计划书
- 五金件盐雾测试报告
- 肛管鳞状细胞癌临床诊疗要点
- JG/T 8-2016钢桁架构件
- 选择测试题大全及答案
- 陕西西安工业投资集团有限公司招聘笔试题库2025
- 废旧船买卖合同协议书
- 2023年河北省中考数学真题(原卷版)
评论
0/150
提交评论