正则多行文本匹配(包含单引号的处理)
2015-04-13 18:25
295 查看
正则你说有技术含量没有也没有什么技术含量,你说没有吧,它又很有技术含量! 这就是正则。
从开始到现在写正则,最深刻的体会就上面那一句话。学正则其实不难,都是一些符号背后代表的含义,但是活用起来那就真的千变万化了。 同一个案例让不同的人来写,可以写出不同的正确答案出来! 上次用正则取网页源码的时候,必须先匹配出多行文本出来,因为我要取的值那一行没什么特别的,是个很普通的文本,只有把前后几行一起给它先匹配出来, 后面才能定位出我要的值!
例如: 我现在要取网页里这样的一个值,
如果要name这个值,就用这一行用正则取出来是基本行不通的。因为"<td>"标签在网页里面太普通了,到处都是,而我就只需要这个name。 怎么办? 这个时候,我们就需要扩大范围。
这个时候我们用扩大范围的思路,会发现越扩大范围,唯一性的概率越大。于是,我们就想办法先匹配出上面那段! 神奇的正则派上用场了。
开始关键字([\s\S]*?)结束关键字 ----应用实例:
正则表达式.创建 (“<tr>([\s\S]*?)</tr>”),通过这段正则,我们就可以匹配出"<tr>"和“</tr>”之间代码文本了!
这里很巧妙,[\s\S]*?的意思就是匹配任意字符,后面的问号就是非贪婪匹配。就是遇到即停止继续匹配。能理解? 好了,正则不难,但是活用起来就不是一朝一夕了。 后面,还碰到好的思路我也会写下来!
最后我们说说单引号的问题,单引号和双引号这个在用正则的时候都需要注意,因为是文本型,单引号单独的放进常量文本里面!
从开始到现在写正则,最深刻的体会就上面那一句话。学正则其实不难,都是一些符号背后代表的含义,但是活用起来那就真的千变万化了。 同一个案例让不同的人来写,可以写出不同的正确答案出来! 上次用正则取网页源码的时候,必须先匹配出多行文本出来,因为我要取的值那一行没什么特别的,是个很普通的文本,只有把前后几行一起给它先匹配出来, 后面才能定位出我要的值!
例如: 我现在要取网页里这样的一个值,
<td>"name"</td>
如果要name这个值,就用这一行用正则取出来是基本行不通的。因为"<td>"标签在网页里面太普通了,到处都是,而我就只需要这个name。 怎么办? 这个时候,我们就需要扩大范围。
<div>"唯一" <td>"name"</td> <div>
这个时候我们用扩大范围的思路,会发现越扩大范围,唯一性的概率越大。于是,我们就想办法先匹配出上面那段! 神奇的正则派上用场了。
开始关键字([\s\S]*?)结束关键字 ----应用实例:
<table> <tr> <td>单元格1</td><td>单元格2</td> </tr> <tr> <td>单元格3</td><td>单元格4</td> </tr> </table>
正则表达式.创建 (“<tr>([\s\S]*?)</tr>”),通过这段正则,我们就可以匹配出"<tr>"和“</tr>”之间代码文本了!
这里很巧妙,[\s\S]*?的意思就是匹配任意字符,后面的问号就是非贪婪匹配。就是遇到即停止继续匹配。能理解? 好了,正则不难,但是活用起来就不是一朝一夕了。 后面,还碰到好的思路我也会写下来!
最后我们说说单引号的问题,单引号和双引号这个在用正则的时候都需要注意,因为是文本型,单引号单独的放进常量文本里面!
相关文章推荐
- awk处理之案例五:awk匹配字段2包含字段1的文本
- 用正则匹配多行文本
- 用python处理时间、utf8文本、正则匹配、序列化、目录路径搜索、xml解析
- awk处理之案例五:awk匹配字段2包含字段1的文本
- bash 正则表达式匹配,一行文本中 “包含 ABC” 并且 “不包含 XYZ”
- 用正则匹配多行文本
- 正则表达式匹配多行文本的解决方法
- 模式匹配文本处理
- .NET读取所有目录下文件正则匹配文本电子邮件
- 正则表达式匹配多行文本
- 正则表达式里面[有特殊意义,如果做文本匹配需要用 //[
- 匹配多行文本 /m用法
- PHP匹配多行的正则表达式分析
- perl:匹配多行文本
- [正则表达式] 能匹配出多行注释之外的所有空白字符的正则表达式:)
- SED,AWK学习笔记Part 1-----利用正则表达式进行文本匹配
- 正则入门:匹配文本首和尾
- .NET读取所有目录下文件正则匹配文本电子邮件
- [linux学习笔记]第3天:变量分类,重定向,管道命令,程序执行流,文本处理类命令, 正则表达式,短路操作符
- 在Java中使用正则表达式处理文本