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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

入门正则表达式

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

入門正則表達式

???????? 正則表達式(百科),一直在學習,一直在忘記,一直在不經意間用到它,想想自己,或許真的很笨,時至今日,仍只會些皮毛的匹配,始終沒有得到要領。可是工作在繼續,每當自己孤軍作戰至深夜,似乎總也看不到正確的正則表達式在無邊的黑夜里向我招手。頭疼至極,不得已向BBS上的A大,水版等高手求救。很快,那幾個精煉的字符便一掃自己的郁悶,有時晃然明白,有些個圈內的朋友是多么地好!可以讓自己少走很多彎路。

???????? 可是朋友終究只會救自己于一時,不能一世,如何在他們的HELP之下讓自己也會“漁”?總結一些方法,希望有路過的朋友多多指教。

方法1. 用到時,不能第一時間寫出來,速查簡明的教程,如:正則表達式30分鐘入門教程? 優勢很明顯,這種實戰型教程不像有些教科書那樣晦澀難懂,它更像一本字典,如今我將這個教程打印出來,放在案邊,能解決我大部分問題,并且在我有時間時,將用過的復習一下并反復地看教程,我相信多好,終究會慢慢看更多的東西出來。

方法2. 每次上BBS上看這類的貼子,遇到不懂的,或者感覺有理解難度的,先收藏之,過后,反復學習和調試他人的方法。如:

?? 實例1:去除以下配置文件中的重復行(該配置文件可能有幾十萬行):

  • 配置文件XXX.ini內容如下: ?
  • [config] ?
  • key=一心一意 ?
  • key=三心二意 ?
  • key=十全十美 ?
  • key=百年好合 ?
  • key=千金萬馬 ?
  • key=萬馬奔騰 ?
  • key=狗急跳墻 ?
  • key=紙上談兵 ?
  • key=虎虎生威 ?
  • key=高瞻遠矚 ?
  • key=一心一意?
  • 水版給的答案是:

  • $sText?=?FileRead('XXX.ini') ?
  • $sRer?=?StringRegExpReplace($sText,?'(key=.+)(?=[^\1]+\1)',?'') ?
  • $sRer?=?StringRegExpReplace($sRer,?'^\v+|\r?\n(?=\r?\n)|\r?\n$',?'')?;去掉之前遺留下來的空行! ?
  • MsgBox(0,?'',?$sRer)?
  • 實例2:從一個字符串中提取出IP地址:

    A大的:

  • Local?$Str?=?'\\192.168.8.30\log\yanshi'?
  • Local?$Test?=?StringRegExpReplace($str,?'.*\\((?:\d+\.){3}\d+)\\.*',?'$1') ?
  • MsgBox(0,?'替換結果',?$Test) ?
  • ?
  • 匹配模式也可以: ?
  • Local?$Str?=?'\\192.168.8.30\log\yanshi'?
  • Local?$Test?=?StringRegExp($str,?'(?:\d+\.){3}\d+',?1) ?
  • If?Not?@Error?Then?MsgBox(0,?'',?$Test[0])?
  • ?匹配最后一行:

  • stringregexp($str,'.+$',3)?
  • 取所在地:

  • Global?$sText ?
  • $Source?=?_INetGetSource('http://www.ip138.com/ips.asp?ip='?&?InputBox("IP",?"請輸入IP地址")) ?
  • $aRe?=?StringRegExp($Source,?'(?<=<li>)[^<]+',?3) ?
  • For?$i?=?0?To?UBound($aRe)?-?1 ?
  • ????????$sText?&=?$aRe[$i]?&?@CRLF ?
  • Next?
  • MsgBox(0,?'',?$sText)?
  • 附一些網上廣為流傳轉載的【不怎么嚴謹,若用于工作中請謹慎測試一下】:

  • 匹配HTML標記的正則表達式:<(\S*?)[^>]*>.*?</\1>|<.*??/> ?
  • 評注:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對于復雜的嵌套標記依舊無能為力 ?
  • ?
  • 匹配首尾空白字符的正則表達式:^\s*|\s*$ ?
  • 評注:可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達式 ?
  • ?
  • 匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* ?
  • 評注:表單驗證時很實用 ?
  • ?
  • 匹配網址URL的正則表達式:[a-zA-z]+://[^\s]* ?
  • 評注:網上流傳的版本功能很有限,上面這個基本可以滿足需求 ?
  • ?
  • 匹配帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ ?
  • 評注:表單驗證時很實用 ?
  • ?
  • 匹配國內電話號碼:\d{3}-\d{8}|\d{4}-\d{7} ?
  • 評注:匹配形式如?0511-4405222?或?021-87888822 ?
  • ?
  • 匹配騰訊QQ號:[1-9][0-9]{4,} ?
  • 評注:騰訊QQ號從10000開始 ?
  • ?
  • 匹配中國郵政編碼:[1-9]\d{5}(?!\d) ?
  • 評注:中國郵政編碼為6位數字 ?
  • ?
  • 匹配×××:
  • ^\d{14}\w|\d{17}\w$
    或者:
    ^\d{14}\d{3}?\w$
    ?
  • 評注:中國的×××為15位或18位 ?
  • ?
  • 匹配ip地址: $bdz="^\d{1,3}$"
    ??????????????????????? $aReturn = StringRegExp($csz,$bdz, 3)
    ??????????????????????? If Not IsArray($aReturn) Then
    ??????????????????????????????? MsgBox(64,"警告",$dailiip & " 中的 " & $csz & " 不是有效IP地址范圍!")
    ?????????????????????????????????? $IPchajieq= 1???????????????????????????????????????????????????????
    ??????????????????????? Else
    ??????????????????????????????? If $csz > 255 Then???????????????????????????????????????
    ??????????????????????????????????????? MsgBox(64,"警告",$dailiip & " 中的 " & $csz & " IP數值超出!")
    ??????????????????????????????????????? $IPchajieq= 1??????????????????????????????????????????????
    ??????????????????????????????? EndIf
    ??????EndIf
  • 評注:提取ip地址時有用 ?
  • ?
  • 匹配特定數字: ?
  • ^[1-9]\d*$ ? ?//匹配正整數 ?
  • ^-[1-9]\d*$? ?//匹配負整數 ?
  • ^-?[1-9]\d*$  ?//匹配整數 ?
  • ^[1-9]\d*|0$ ?//匹配非負整數(正整數?+?0) ?
  • ^-[1-9]\d*|0$  ?//匹配非正整數(負整數?+?0) ?
  • ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$  ?//匹配正浮點數 ?
  • ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ ?//匹配負浮點數 ?
  • ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ ?//匹配浮點數 ?
  • ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$  ?//匹配非負浮點數(正浮點數?+?0) ?
  • ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮點數(負浮點數?+?0) ?
  • 評注:處理大量數據時有用,具體應用時注意修正 ?
  • ?
  • 匹配特定字符串: ?
  • ^[A-Za-z]+$  //匹配由26個英文字母組成的字符串 ?
  • ^[A-Z]+$  //匹配由26個英文字母的大寫組成的字符串 ?
  • ^[a-z]+$  //匹配由26個英文字母的小寫組成的字符串 ?
  • ^[A-Za-z0-9]+$  //匹配由數字和26個英文字母組成的字符串 ?
  • ^\w+$  //匹配由數字、26個英文字母或者下劃線組成的字符串 ?
  • 評注:最基本也是最常用的一些表達式?
  • ?

    方法三:多參與一些老大們在BBS上的學習測試,多寫,盡力去嘗試。無數的實戰一定能煉成神功。呵呵

    方法四:用一些功能豐富便利的調試工具,比如上邊入門教程中提到的,我自己用的是A版自己開發的,發上來跟大家分享,見附件。

    我會堅持學習它,希望自己能夠駕馭,輕松用于工作中。若路過的您有更好的方法,請您多多指教我這個菜鳥。

    感謝!

    轉載于:https://blog.51cto.com/boyhong/513881

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

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

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