成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當前位置:首頁>>軟件教程>>新聞內容  
正則的幾個基本概念
作者:秋水無恨 發布時間:2003-11-4 13:47:03 | 【字體:

經常看到說正則的文章,但說的只是方法,卻很少有說以下幾個基本概念:

1.貪婪:+,*,?,{m,n}等默認是貪婪匹配,即盡可能多匹配,也叫最大匹配
如果后面加上?,就轉化為非貪婪匹配,需要高版本支持

2.獲取:默認用(x|y)是獲取匹配,很多時候只是測試,不一定要求得到所匹配的數據,尤其在嵌套匹配或大數據中就要用非獲取匹配(?:x|y),這樣提高了效率,優化了程序。

3.消耗:默認是消耗匹配,一般在預查中是非消耗匹配。
舉個例子,2003-2-8要變為2003-02-08
如果用/-(\d)-/第二次匹配將從8開始,從而只替換第一個2,錯誤
如果用/-(\d)(?=-)/則第二次匹配從第二個-開始,即不消耗字符-

4.預查:js中分為正向預查和負向預查
如上面的(?=pattern)是正向預查,在任何匹配 pattern 的字符串開始處匹配查找字符串。還有(?!pattern)是負向預查,在任何不匹配 pattern 的字符串開始處匹配查找字符串。負向預查有時會用在對[^]的擴充,[^]只是一些字符,而?!可以使整個字符串。

5.回調:一般用在替換上,即根據不用的匹配內容返回不用的替換值,從而簡化了程序,需要高版本支持

6.引用:\num 對所獲取的第num個匹配的引用。
例如,'(.)\1\1' 匹配AAA型。'(.)(.)\2\1' 匹配ABBA型。


[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]


當然還有很多,這些都只是基本的需要掌握的

遇到正則問題,一般可用以下兩種方法解決:

1.分類,即根據所有的可能列出各種情況,如2003以內的數
0 0
1-999 [1-9]\d{0,2}
1000-1999 1\d{3}
2000-2003 200[0-3]

所以最后的匹配就是 (0|[1-9]\d{0,2}|1\d{3}|200[0-3])

2.分組,即將整句分為不同的最小單元,如'、%、_成雙出現
能成組的,即允許存在的,有
''
%% 如果是大于2的偶數個可細分為多個更小的2字符單元
__
[^'%_] 非以上字符

所以最后的匹配就是 ^(''|%%|__|[^'%_])*$



[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]

 

 


文章來源:藍色理想
 放生
 愚愛
 夠愛
 觸電
 白狐
 葬愛
 光榮
 畫心
 火花
 稻香
 小酒窩
 下雨天
 右手邊
 安靜了
 魔杰座
 你不像她
 邊做邊愛
 擦肩而過
 我的答鈴
 懷念過去
 等一分鐘
 放手去愛
 冰河時代
 你的承諾
 自由飛翔
 原諒我一次
 吻的太逼真
 左眼皮跳跳
 做你的愛人
 一定要愛你
 飛向別人的床
 愛上別人的人
 感動天感動地
 心在跳情在燒
 玫瑰花的葬禮
 有沒有人告訴你
 即使知道要見面
 愛上你是一個錯
 最后一次的溫柔
 愛上你是我的錯
 怎么會狠心傷害我
 不是因為寂寞才想
 親愛的那不是愛情
 難道愛一個人有錯
 寂寞的時候說愛我
主站蜘蛛池模板: 铜陵市| 洛川县| 子洲县| 双流县| 汶川县| 百色市| 安乡县| 揭阳市| 长海县| 南宫市| 志丹县| 奉新县| 始兴县| 五河县| 宁德市| 栖霞市| 闽清县| 吐鲁番市| 株洲县| 蒙自县| 民勤县| 沙雅县| 鱼台县| 兰州市| 溧阳市| 台东县| 葫芦岛市| 杭锦旗| 山阴县| 张北县| 祁连县| 惠州市| 资溪县| 开江县| 太谷县| 涞源县| 营口市| 开鲁县| 曲沃县| 泰顺县| 奉新县|