2.15 典型正则表达式解释(2)
来源:互联网 发布:面试软件测试工程师 编辑:程序博客网 时间:2024/06/03 23:18
3.匹配HTML标记之间的内容
HTML标记一般被尖括号包围,如<a>、<table>、<br>、<input>等。以下正则表达式能够匹配HTML标记。
(?<=<(?<tag>/w+)>).*(?=<///k<tag>>) (84)
正则表达式(84)解释:
(?<tag>/w+)是一个分组,它的名称为“tag”。在该正则表表达式匹配过程,它将保存被匹配的内容。
<(?<tag>/w+)>匹配HTML标记的开头标记,如<a>、<table>等。
(?<=<(?<tag>/w+)>)是一个零宽度正回顾后发断言,它断言自身位置的前面能够匹配<(?<tag>/w+)>所匹配的内容。在此,该表达式断言被匹配的字符串的开头部分是HTML标记的开头标记。
/k<tag>后向引用名称为“tag”的分组,即被匹配到的HTML标记的名称。
//匹配字符/。
<///k<tag>>匹配HTML标记的结尾标记,如</a>、</table>等。
(?=<///k<tag>>)是一个零宽度正预测先行断言。在此,该表达式断言被匹配的字符串的结尾部分是HTML标记的结尾标记。
.*匹配HTML标记之间的任何字符。
使用工具Regex Tester测试正则表达式(84),结果如图所示。
4.匹配CSV文件内容
CSV文件是非常特殊的一种文件,它的内容满足以下4个条件:
数据被逗号(,)分割。在此,设被分割后的数据称为单个数据。
单个数据的长度不能为0。
如果某单个数据中包含逗号(,),那么该单个内容被双引号(")包围。
如果单个数据中包含双引号("),则用两个双引号表示一个双引号。
如下内容就是某个CSV文件的一部分。
aaa,bbb,ccc,ddd,"ab,de",eee,fff,ggg,"this is ""aa",hhhf
以下正则表达式能够匹配不包含逗号(,)或者双引号(")的单个数据。
[^",]+ (85)
如果单个数据包含逗号(,)或者双引号(")时,那么该单个数据被双引号(")包围。因此,匹配该类型单个数据的正则表达式形式如下:
"[匹配单个数据内容的正则表达式]" (86)
该类型单个数据要么是两个连续双引号(""),要么是除单个双引号("")的任意字符。因此,以下正则表达式能够匹配包含逗号(,)或者双引号(")的单个数据。
"(?:([^"]|""))+" (87)
综合上述,以下正则表达式能够匹配CSV文件中的单个数据。
[^",]+|("(?:([^"]|""))+") (90)
以下正则表达式能够匹配CSV文件的内容。
([^",]+|("(?:([^"]|""))+"))(/s*,/s*([^",]+|("(?:([^"]|""))+")))* (91)
正则表达式(91)解释:
[^",]+|("(?:([^"]|""))+")匹配CSV文件中的单个数据。
/s*匹配逗号(,)两边的空白字符。
/s*,/s*([^",]+|("(?:([^"]|""))+"))匹配“逗号(,)+单个数据”组成的字符串,并且还包含逗号(,)两边的空白字符。
(/s*,/s*([^",]+|("(?:([^"]|""))+")))*匹配0个或多个“逗号(,)+单个数据”组成的字符串。同样,也包含逗号(,)两边的空白字符。
使用工具Regex Tester测试正则表达式(91),结果如图所示。
- 2.15 典型正则表达式解释(2)
- 2.15 典型正则表达式解释(1)
- 正则表达式及其典型使用
- 电子邮件正则表达式解释
- 电子邮件正则表达式解释
- 正则表达式符号解释
- 正则表达式符号解释
- 正则表达式 符号 解释
- 正则表达式符号解释
- 正则表达式符号解释
- 正则表达式解释
- 正则表达式字符解释
- 正则表达式符号解释
- 正则表达式符号解释
- PHP正则表达式典型应用三例
- 正则表达式&自定义异常 典型案例
- 正则表达式全部符号解释
- 正则表达式全部符号解释
- 纯真IP数据库格式详解
- 项目管理软件比较:jira, trac, sharepoint, teamwork, dotproject, igantt,etc.
- Ajax In Action 附录B 2.6
- 柱状图/ 折线图 总结
- c#.net调用存储过程
- 2.15 典型正则表达式解释(2)
- oracle 24个日期函数介绍
- 一颗开花的树
- 格式化相关
- Microsoft Word 对象
- C++ Inheritance
- 更新ADT遇到问题,requires plug-in "org.eclipse.wst.sse.ui"
- 基于oracle的大型协同OA 平台
- 一步一步破解 JIRA3.6