程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Qt正則表達式的貪婪模式

Qt正則表達式的貪婪模式

編輯:C++入門知識

使用了2個正則表達式庫,分別是QRegExp、pcre和pcre++。正則表達式的寫法一般都是通用的,但對於貪婪匹配,不同的正則庫有些不同。 在pcre中,非貪婪模式是由'?'來指定的,但在QRegExp中,存在'?',為不合法的正則表達式,在QRegExp中,要使用setMinimal函數來指定貪婪算法。setMinimal函數的意思是設置最小匹配,也就是非貪婪。   1.例子: 從html代碼中抓取隱藏域   內容: [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>     <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) 匹配結果: [html]   " 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"     " 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) 匹配結果: [html]   " 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"     " 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(.*)?/>  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved