關於正則表示式數量詞的貪婪與非貪婪模式
在匹配正則的時候或許會遇到返回的結果多幾個字元或者少幾個字元,什麼原因呢,這個就是正則的貪婪與非貪婪模式,假設,我的匹配字元是:
a = 'asdf444adfadf adfsadf'
正則表示式的貪婪模式:
[a-z]{2,6}
列印結果
['asdf', 'adfadf', 'adfsad']
按原理來說在匹配到第二個字元的時候條件就已經滿足了,但是為什麼又繼續往後匹配,這個就是正則表示式複數的貪婪模式,在匹配到第二個的時候發現後面還能繼續滿足條件那麼久會繼續匹配,直到條件不滿足為止。
非貪婪模式跟貪婪模式相反的,理解了貪婪模式那麼非貪婪模式也是類似的
開啟非貪婪模式的話也很簡單,後面加個問號就行
[a-z]{2,6}?
相關推薦
關於正則表示式數量詞的貪婪與非貪婪模式
在匹配正則的時候或許會遇到返回的結果多幾個字元或者少幾個字元,什麼原因呢,這個就是正則的貪婪與非貪婪模式,假設,我的匹配字元是: a = 'asdf444adfadf adfsadf' 正則表示式的貪婪模式: [a-z]{2,6} 列印結果 ['asdf',
python正則表示式貪婪與非貪婪模式
之前做程式的時候看到過正則表示式的貪婪與非貪婪模式,今天用的時候就想不起來了,現在這裡總結一下,以備自己以後用到注意。 1.什麼是正則表示式的貪婪與非貪婪匹配 如:String str="abcaxc"; Patter p="ab.*c"; 貪婪匹配:正則表示式一般趨向於最大長度匹配,
正則表示式貪婪與非貪婪模式
之前做程式的時候看到過正則表示式的貪婪與非貪婪模式,今天用的時候就想不起來了,現在這裡總結一下,以備自己以後用到注意。 1.什麼是正則表示式的貪婪與非貪婪匹配 如:String str="abcaxc"; Patter p="ab.*c"; 貪婪匹配:正則表示式一般趨向於最大長度匹配,也就是所謂
正則表示式之貪婪與非貪婪模式(II)
貪婪模式 正則表示式在匹配的時候會盡可能多的匹配,直至匹配失敗 如: '123456789'.replace(/\d{3,7}/g,'X') 結果: "X89" 非貪婪模式 讓正
[轉] 正則表示式貪婪與非貪婪模式
今天使用Notepad++時發現搜尋時需要正則匹配,到網上搜了下Notepad++中正則的用法,發現有個加+號是非貪婪匹配的東西,不太記得了,故到網上搜索,發現有用部落格一份: 之前做程式的時候看到過正則表示式的貪婪與非貪婪模式,今天用的時候就想不起來了,現在這裡總結一下,以備自己以後用到注意。 1.什麼
正則表示式之--貪婪與非貪婪模式詳解
“.*”取得控制權後,由A後面的位置開始嘗試匹配,由於是貪婪模式,優化嘗試匹配,一直匹配到字串的結束位置,將控制權交給“"”。“"”取得控制權後,由於已經是字串的結束位置,匹配失敗,查詢可供回溯的狀態,將控制權交給“.*”,由“.*”讓出已匹配字元“.”。重複以上過程,直到後面“"”匹配了C處後面的字元“””
正則表示式的貪婪與非貪婪
var s='120000|天津市,130000|河北省,210000|遼寧省,220000|吉林省,310000|上海市,320000|江蘇省,330000|浙江省,'; var r = /310000/|(.*?)(?:,)/ r.exec(s); s.match(
正則表示式的貪婪與非貪婪模式
<script> try{ str="<p>abcdefg</p><p>abcdefghijkl</p>"; re1=str.match(/<p>[\W\w]+?<\/p>/ig); al
[ 轉載 ] 什麽是正則表達式的貪婪與非貪婪匹配
blog 環視 北京市 正則表達式 clas 第一個 pat exp com http://www.cnblogs.com/xudong-bupt/p/3586889.html 1.什麽是正則表達式的貪婪與非貪婪匹配 如:String str="abcaxc"; Patte
正則表達式:貪婪與非貪婪
move www emp echo 無法 rem 但是 耗資源 loaded 前言 在一段時間內,一直不知道.*和.*?之間的區別,一直單純的覺得兩者之間並沒有什麽區別,都是匹配任意字符,知道今天才知道其中的區別 簡要介紹 首先從一個簡單的問題的問題開始思考: 有這樣一個字
python正則表示式的懶惰匹配和貪婪匹配
第一次碰到這個問題的時候,確實不知道該怎麼辦,後來請教了一個大神,加上自己的理解,才瞭解是什麼意思,這個東西寫python的會經常用到,而且會特別頻繁,在此寫一篇部落格,希望可以幫到一些朋友。例:一個字串 “abcdacsdnd” ①懶惰匹配 regex
java中正則表示式的瞭解與實踐記錄
Pattern pattern = Pattern.compile("^\\S+/q/"); Matcher matcher = pattern.matcher(resultString); String qrcode=""; while(matcher.find()){ String path
linux 正則表示式 之 sed 與awk
sed 可以將資料進行替換,刪除,新增,選取等操作 sed [引數] [動作] 引數: -n :使用安靜模式 ,只有經過sed特殊處理的那一行才能被列出來 -i : 直接修改讀取檔案內容,而不是由螢幕輸出 -e
正則表示式,匹配所有非中文字元
^[\u4E00-\u9FFF]+$ 控制只允許輸入中文字元: var reg = new RegExp('^[\u4E00-\u9FFF]+$'); alert(reg.test(this.userName_up)); if (!reg.test(this.userName_up)
正則表示式的效率與優化
以下內容整理自《PHP核心技術與最佳實踐》 一、使用字元組代替分支條件 eg. 使用[a-d]表示a~d之間的字母,而不是使用(a|b|c|d) function regTest($pattern,$str,$cnt){ $start=mi
javascripts使用正則表示式--1概念與定義
正則表示式(regular Expression)是一個描述字元模式的物件,其中字元模式由普通字元(如A~Z 、a~z、0~9)和特殊字元(元字元)組成 一、 正則表示式的運用範圍: 1、驗證字串:驗證給定的字串或子字串是否符合指定特徵,例如,驗證郵件地址、電話號碼、手機號碼等
Java正則表示式的語法與示例
正向肯定預查,在任何匹配pattern的字串開始處匹配查詢字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。預查不消耗字元
Linux正則表示式-選擇性操作與分組操作
選擇性操作 豎線(|)字元是元字元擴充套件集的一部分,用於指定正則表示式的聯合。如果某行匹配其中的一個正則表示式,那麼它就匹配該模式。例如,正則表示式:UNIX|LINUX 將匹配包含字串"UNIX" 或字串"LINUX" 的行。可以指定更多的選擇,例如: UNIX|LI
js中利用正則表示式實現空格與換行的互相轉換
1.將換行符轉換成空格: var content = accountInfo.replace(/\r\n/mg,' '); 2.將空格轉換成換行:var accountInfo = (document.getElementById("accountInfo").value
python正則表示式匹配時間與日期
import refrom datetime import datetimetest_date = '他的生日是2016-12-12 14:34,是個可愛的小寶貝.二寶的生日是2016-12-21 11:34,好可愛的.'test_datetime = '他的生日是2016-