Qt正则表达式的贪婪模式
来源:互联网 发布:php自定义config 编辑:程序博客网 时间:2024/06/01 10:24
使用了2个正则表达式库,分别是QRegExp、pcre和pcre++。正则表达式的写法一般都是通用的,但对于贪婪匹配,不同的正则库有些不同。
在pcre中,非贪婪模式是由'?'来指定的,但在QRegExp中,存在'?',为不合法的正则表达式,在QRegExp中,要使用setMinimal函数来指定贪婪算法。setMinimal函数的意思是设置最小匹配,也就是非贪婪。
1.例子:
从html代码中抓取隐藏域
内容:
正则表达式:
<input.*type=["]hidden(.*)/>
ps:如果要在代码里面写,'"'要用斜杠转义,变成:<input.*type=[\"]hidden(.*)/>
匹配结果:
(1).要最小化匹配->非贪婪
setMinimal(true)
匹配结果:
(2).要最大化匹配->贪婪
setMinimal(false)
匹配结果:
贪婪模式下,直接匹配到最后一次出现"/>"的位置
非贪婪模式下,每次遇到"/>"完成一次匹配
2.在上面的例子中,如果要在pcre库中实现同样的功能,正则表达式是:<input.*?type=[\"]?hidden(.*)?/>
为了验证,写了一个小例子,源码下载地址:ExReg.rar
在pcre中,非贪婪模式是由'?'来指定的,但在QRegExp中,存在'?',为不合法的正则表达式,在QRegExp中,要使用setMinimal函数来指定贪婪算法。setMinimal函数的意思是设置最小匹配,也就是非贪婪。
1.例子:
从html代码中抓取隐藏域
内容:
<form method="post" name="" id="loginFormQiye" target="_top" style="display:none;" action=""><input type="hidden" name="account_name" id="txtUserNameqiye" value="" /><input type="hidden" name="domain" id="txtUserDomainqiye" value="" /><input type="hidden" name="password" id="txtPasswordqiye" value="" /><input type="hidden" id="qiyeall_secure" name="all_secure" value="1"/><input type="aaa" id="aaa" name="aaa" value="1"/><input type="abc" id="abc" name="abc" value="1"/><input type="hidden" id="test" name="test" value="1"/></form>
正则表达式:
<input.*type=["]hidden(.*)/>
ps:如果要在代码里面写,'"'要用斜杠转义,变成:<input.*type=[\"]hidden(.*)/>
匹配结果:
(1).要最小化匹配->非贪婪
setMinimal(true)
匹配结果:
" name="account_name" id="txtUserNameqiye" value="" " name="domain" id="txtUserDomainqiye" value="" " name="password" id="txtPasswordqiye" value="" " id="qiyeall_secure" name="all_secure" value="1"" id="test" name="test" value="1"
(2).要最大化匹配->贪婪
setMinimal(false)
匹配结果:
" name="account_name" id="txtUserNameqiye" value="" /><input type="hidden" name="domain" id="txtUserDomainqiye" value="" /><input type="hidden" name="password" id="txtPasswordqiye" value="" /><input type="hidden" id="qiyeall_secure" name="all_secure" value="1"/><input type="aaa" id="aaa" name="aaa" value="1"/><input type="abc" id="abc" name="abc" value="1"/><input type="hidden" id="test" name="test" value="1"
贪婪模式下,直接匹配到最后一次出现"/>"的位置
非贪婪模式下,每次遇到"/>"完成一次匹配
2.在上面的例子中,如果要在pcre库中实现同样的功能,正则表达式是:<input.*?type=[\"]?hidden(.*)?/>
为了验证,写了一个小例子,源码下载地址:ExReg.rar
- Qt 正则表达式的非贪婪模式
- Qt正则表达式的贪婪模式
- 正则表达式的贪婪模式与非贪婪模式
- Python正则表达式的贪婪模式和非贪婪模式
- 正则表达式贪婪模式
- 正则表达式贪婪模式
- 关于正则表达式的贪婪与非贪婪模式
- 正则表达式的贪婪与非贪婪模式
- 关于正则表达式的贪婪与非贪婪模式
- 正则表达式的“非贪婪模式”
- javascript正则表达式的非贪婪模式
- 正则表达式的贪婪与懒惰模式
- 正则表达式的贪婪与懒惰模式
- 正则表达式的贪婪与懒惰模式
- 正则表达式非贪婪模式的应用
- 正则表达式贪婪与非贪婪模式
- 正则表达式贪婪与非贪婪模式
- 正则表达式贪婪与非贪婪模式
- linux netem简介
- Java 原始类型大小
- http://help.dottoro.com/ljbwbehw.php
- Commons-lang 学习(1)
- Linux Netfilter简介
- Qt正则表达式的贪婪模式
- 职业心态与职业生涯规划
- fefora安装firefox
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- 如何添加iis默认文档?
- Fedora 8下常用应用软件的安装方法
- 求数组中最大的K个数
- 用指针 数组连接
- POJ 2778 DNA Sequence AC自动机 矩阵加速DP