日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正则表达式(overall)

發布時間:2025/5/22 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则表达式(overall) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

令自己想愛但深愛不上的正則表達式~

閱讀網站:http://c.biancheng.net/cpp/html/1402.html

為什么使用正則表達式?

①防止SQL注入:尤其對于網站,安全是至關重要的,寫好正則表達式,能夠驗證輸入信息,保證輸入數據的合法性,不至于不法人士侵入數據庫破壞網站;

②采集:從互聯網上按照某種規則搜索想要的數據,對于分析復雜的HTML標簽,正則表達式是一件利器;

③驗證數據:無論對于軟件還是網站,用戶輸入的數據都需要驗證后再提交,以得到安全和想要的數據。

1.\b:

正則表達式規定的一個特殊代碼(某些人叫它元字符,metacharacter),代表著單詞的開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是\b并不匹配這些單詞分隔字符中的任何一個,它只匹配一個位置

精確地查找hi這個單詞的話,我們應該使用\bhi\b。

2..

元字符,匹配除了換行符以外的任意字符。

3.*

元字符,不過它代表的不是字符,也不是位置,而是數量——它指定*前邊的內容可以連續重復使用任意次以使整個表達式得到匹配(重復零次或更多次)。

所以當.*連在一起就意味著任意數量的不包含換行的字符。

4.\d

元字符,匹配一位數字(0,或1,或2,或……)。

5.-

不是元字符,只匹配它本身——連字符(或者減號,或者中橫線,或者隨你怎么稱呼它)。

6.\s

匹配任意的空白符,包括空格,制表符(Tab),換行符,中文全角空格等。

7.\w

匹配字母或數字或下劃線或漢字等。

8.^

匹配字符串的開始

9.$

匹配字符串的結束

10.+

重復一次或更多次

11.?

重復零次或一次

12.{n}

重復n次

13.{n,}

重復n次或更多次

14.{n,m}


重復n到m次

分枝條件

正則表達式里的分枝條件指的是有幾種規則,如果滿足其中任意一種規則都應該當成匹配,具體方法是用|把不同的規則分隔開。

反義(大寫):

零寬斷言:

用于查找在某些內容(但并不包括這些內容)之前或之后的東西,也就是說它們像\b,^,$那樣用于指定一個位置,這個位置應該滿足一定的條件(即斷言);

(?=exp)也叫零寬度正預測先行斷言,它斷言自身出現的位置的后面能匹配表達式exp。比如\b\w+(?=ing\b),匹配以ing結尾的單詞的前面部分(除了ing以外的部分),如查找I'm singing while you're dancing.時,它會匹配sing和danc。

(?<=exp)也叫零寬度正回顧后發斷言,它斷言自身出現的位置的前面能匹配表達式exp。比如(?<=\bre)\w+\b會匹配以re開頭的單詞的后半部分(除了re以外的部分),例如在查找reading a book時,它匹配ading。

假如你想要給一個很長的數字中每三位間加一個逗號(當然是從右邊加起了),你可以這樣查找需要在前面和里面添加逗號的部分:((?<=\d)\d{3})*\b,用它對1234567890進行查找時結果是234567890。

(?<=\s)\d+(?=\s)匹配以空白符間隔的數字(再次強調,不包括這些空白符)

懶惰限定符:

正則表達式中包含能接受重復的限定符時,通常的行為是(在使整個表達式能得到匹配的前提下)匹配盡可能多的字符。考慮這個表達式:

a.*b,它將會匹配最長的以a開始,以b結束的字符串。如果用它來搜索aabab的話,它會匹配整個字符串aabab。這被稱為貪婪匹配

有時,我們更需要懶惰匹配,也就是匹配盡可能少的字符。前面給出的限定符都可以被轉化為懶惰匹配模式,只要在它后面加上一個問號?。

這樣.*?就意味著匹配任意數量的重復,但是在能使整個匹配成功的前提下使用最少的重復。

更多的……

更多例子:

1.要求填寫的QQ號必須為5位到12位數字時,可以使用:^\d{5,12}$;

2. 匹配剛好6個字母/數字的單詞:\b\w{6}\b

3.\ba\w*\b匹配以字母a開頭的單詞——先是某個單詞開始處(\b),然后是字母a,然后是任意數量的字母或數字(\w*),最后是單詞結束處(\b);

4.0\d{2}-\d{8}|0\d{3}-\d{7}匹配兩種以連字號分隔的電話號碼:一種是三位區號,8位本地號(如010-12345678),一種是4位區號,7位本地號(0376-2233445);

5.((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)IP地址;

6.(?<![a-z])\d{7}匹配前面不是小寫字母的七位數字;

7.\d{3}(?!\d)匹配三位數字,而且這三位數字的后面不能是數字;

8.\b((?!abc)\w)+\b匹配不包含連續字符串abc的單詞;

9.(?<=<(\w+)>).*(?=<\/\1>)匹配不包含屬性的簡單HTML標簽內里的內容——

(<?(\w+)>)指定了這樣的前綴:被尖括號括起來的單詞(比如可能是<b>),

然后是.*(任意的字符串),最后是一個后綴(?=<\/\1>)。

注意后綴里的\/,它用到了前面提過的字符轉義;\1則是一個反向引用,引用的正是捕獲的第一組,前面的(\w+)匹配的內容,這樣如果前綴實際上是<b>的話,后綴就是</b>了。整個表達式匹配的是<b>和</b>之間的內容(再次提醒,不包括前綴和后綴本身);

10.總覽表:

寫在最后的:

果然,正則表達式會是自己一直的“痛”,不過終再努力一點,加油~

轉載于:https://www.cnblogs.com/zhengyeye/p/7422978.html

總結

以上是生活随笔為你收集整理的正则表达式(overall)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。