正規表示式學習

2021-10-03 16:40:40 字數 2407 閱讀 4399

在開始之前請允許我展示一段正則:(?<=\s)\d(?=\s+)|(?<=\s)\d(?!\d+),在我沒有學的時候了,我就感覺這nm是一段隨便用鍵盤打的字,這是什麼玩意,,,我當時是這麼想的,真的沒明白這是個什麼東西。

但是相信我在學完以後,你一定會真香的!!

什麼是元字元:元字元就是正則裡面最基本的操作單元,最基本的元素;

元字元

說明.(就是乙個點)

用來匹配除了換行符以外的任意字元

\w匹配字母/數字/下劃線/漢字

\s用來匹配任意的空白符,包括空格、製表符、換頁符等。與 [ \f\n\r\t\v] 等效。

\d匹配數字

\b匹配乙個字邊界,即字與空格間的位置。例如,「er\b"匹配"never"中的"er」,但不匹配"verb"中的"er"。

^匹配乙個字串的開始

$匹配乙個字串的結束

將元字元大寫,就能匹配與之小寫相反的字元

元字元

說明\w

匹配不是字母/數字/下劃線/漢字的字元

\s用來匹配不是空白符的字元

\d匹配任意的非數字

\b非字邊界匹配。「er\b"匹配"verb"中的"er」,但不匹配"never"中的"er"。

[^x]

匹配除了x以外的任意字元

[^aeiou]

匹配除了aeiou以外的字元

例如.是乙個元字元,那麼我就想去匹配點怎麼辦?在點前面加\即可

我們的字串中肯定會出現重複的字元需要匹配,那麼就用到我們的正則中的重複處理

元字元說明*

重複0次或者或者更多次

+重複一次或更多次

?重複0次或者一次

重複n次

重複n次或者更多次

重複n次到m次

元字元

說明*?

重複任意次,但盡可能少的重複

+?重複一次或者更多次,但盡可能少的重複

??重複0次或者一次,但盡可能少的重複

?重複n次到m次,但盡可能少的重複

?重複n次或者更多次,但盡可能少的重複

總之就是在這些後面加乙個問號可以進行懶惰匹配。一般沒有使用貪婪匹配的情況

元字元

說明ignorecase(忽略大小寫)

匹配時不區分大小寫。

multiline(多行模式)

更改^和$的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個字串的開頭和結尾匹配。(在此模式下,$的精確含意是:匹配\n之前的位置以及字串結束前的位置.)

singleline(單行模式)

更改.的含義,使它與每乙個字元匹配(包括換行符\n)。

ignorepatternwhitespace(忽略空白)

忽略表示式中的非轉義空白並啟用由#標記的注釋。

explicitcapture(顯式捕獲)

僅捕獲已被顯式命名的組。

這種選項不知道是否在任意的語言中都支援。

能看到這裡的都是比較有耐心的大哥了,這後面屬於一些正則的高階用法,內容也比較抽象,我用的也不是很好

什麼是反向引用呢,我的理解就是重複使用前面定義好的分組,不用自己重新去寫了。

例如我寫了乙個 \b(\w)\b\s+\1\b ,這裡的\1的意思就是(\w)。

其實和零寬斷言相反,就是匹配不佔位的不是某種條件的情況

表示式

說明^[0-9]*$

數字^\d$

n位數字

^\d$

至少n位數字

^[\u4e00-\u9fa5]$

漢字^\w+([-+.]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*$

email位址

[a-za-z0-9][-a-za-z0-9](/.[a-za-z0-9][-a-za-z0-9])+/.?

網域名稱 這個我會持續補充,這裡不做太多的介紹。

歡迎關注我的個人部落格zenshin』blog

正規表示式學習

概念 正規表示式,就是用某種模式去匹配一類字串的乙個公式。基礎 下表列出了所有的元字元和對它們的乙個簡短的描述。簡單例子 vi 命令作用 s g 把乙個或者多個空格替換為乙個空格 s 去掉行尾的所有空格 s 在每一行頭上加入乙個空格 s 0 9 0 9 去掉行首的所有數字字元 s b aeio g ...

正規表示式學習

1.元字元 1 匹配任何單個字元 2 匹配括號中的任何乙個字元 可以再括號中使用連字元 來指定子都的區間來簡化表示,如a 0123456789 c等價於a 0 9 c 3 將 之間括起來的表示式定義為 組 4 將兩個匹配條件進行邏輯 或 運算 z f ood則匹配 zood 或 food 5 匹配0...

正規表示式學習

只是點皮毛,先湊合用著了,順便鄙視一下sqlserver,居然不支援正則。b 元字元,代表著單詞的開頭或結尾,也就是單詞的分界處。d 數字 s 任意的空白符,包括空格,製表符 tab 換行符,中文全形空格等 w 字母或數字或下劃線或漢字等 匹配字串的開始 匹配字串的結束 轉義符 除換行符以外的任意字...