正则体系1
https://edu.51cto.com/center/course/lesson/index?id=344062
?
?
?
正則課程介紹
?
Match tracer ?驗證正則
?
?
?
文檔
工具字典
?
?
語法界面
?
?
?
?
?
字符類 普通 所見即所得
?
?
?
中括號 字符范圍
?
?
?
?
高亮表示匹配到了
?
?
只能匹配a到c
中括號里面的任意一個
?
?
^是管整個方括號里面的東西
?
后面跟上at
?
?
正則 上一次匹配的結束是下一次匹配的開始 ?重點
?
?
第二次從f開始匹配
?
?
第二次從a開始匹配 ?匹配不到 然后從t開始匹配
?
?
?
匹配除了a到d 的任意一個字符
?
?
?
圓括號里面的內容是一個整體 ???豎線 ?或的意思
?
?
分組里面匹配多個重復字符
?
?
?
?
?
預定義字符類
?
?
?
?
?
每一行結束都有一個換行符
?
?
換行符的匹配
換行符 空白 ?肉眼看不見
?
?
匹配所有字符
?
?
?
?
?
字母數字下劃線
?
\W 除了字母 數字 下劃線
?
?
?
量詞 貪婪 ?勉強 ?侵占
?
?
?
量詞模式
?
?
X 表示正則表達式
?
量詞盡量多的匹配字符串
默認都是貪婪模式:盡量多的匹配目標串
?
?
?
?
?
單獨的時候是匹配一個分號 但是加上后面的\d之后就匹配到了兩個分號
問題
?
?
匹配了兩個而不是三個
量詞種類
?
勉強在貪婪模式上面加了個問號 ?每一項都是
侵占就是在貪婪模式的后面加了一個加號
?
貪婪:盡可能多的匹配 且能夠回退?
勉強:盡量少的匹配目標串 ?但不是不匹配 有就匹配
侵占:盡量多的匹配目標串且不回退
?
?
?
貪婪 勉強 ?侵占 詳解
?
?
?
?
回退 ?第二次匹配的時候 只有一個a了 不夠了 ?但是可以回退 ?之前匹配過的一次a
再第二次匹配的時候也參與了 ?回退
?
前面一個a都不匹配
整個表達式 匹配一個a
匹配三次
?
?
每次匹配兩次 ?只能匹配一次
?
?
?
?
一個一個往后吐 ?吐出第一個的時候 ??表達式就能拿到匹配了
?
一次匹配
?
?
?
沒次匹配一個a
?
?
?
匹配不到
?
?
?
?
一次匹配
?
?
?
只能匹配一次 勉強不能回退
?
?
?
匹配不到
?
?
?
?
兩次匹配 不回退嗎
?
回退對大括號無效?
?
?
一次匹配
?
?
?
匹配一次 ?吐一個a
吐一個a ?把后邊的a 加入
?
?
一次匹配 ?這里為什么不回退了?
回退是指多匹配的吐出來 補充后面的,而不是前面的去掉一部分 和后面的一起匹配
?
?
不匹配
?
不回退
?
?
貪婪 勉強 ?侵占實例講解
?
?
?
?
?
盡可能多的匹配 ?那就就會去匹配 第二個foo
第一個foo 就匹配不到了
首先吐出一個o 再吐一個o 最后吐個f 就可以匹配了
?
?
?
一次匹配
?
?
第二次匹配的過程
?
?
兩次匹配
?
?
首先匹配所有的字符 ?因為不回退 ?所以一次都匹配不上
?
?
?
?
?
剛開始匹配 ?到美元符號之前的所有 ?然后吐字符 到小寫的d
?
?
?
一次匹配
?
?
?
剛開始匹配2 但后面不是字母 所有不行 繼續 ?直到上面
第一次匹配
?
?
?
?
第二次匹配
?
?
第三次
?
?
這里開始就不行了
?
?
?
3次匹配
?
?
一次都不能匹配
?
?
?
?
?
捕獲組
?
?
?
把取出的數字都放在分組里面 ?小括號里面
?
?
?
?
?
?
分組匹配到的內容
?
?
高亮
?
?
?
?
代碼例子
?
?
兩次匹配
反向引用
?
?
編號方式
從左到右 從外到里進行編號
?
最外面是第一個分組 0 整個表達式
?
?
?
?
反向引用
?
?
?
?
?
匹配兩個數字
?
是對整匹配結果的替換?不能只替換其中一部分? 錯 應該是可以的 先拿出分組 在替換需要替換的部分
?
前面括號里的內容再出現一次
?
?
?
?
?
?
?
搞不懂
問題
?
?
非捕獲組 ?零斷言表達式
?
?
?
?
?
?
?
每次都有一個分組
?
?
?
沒有子分組了 ?只留下全部匹配 ?分組匹配就不要了
?
零寬度斷言
?
?
正向肯定預查 ?一般放到表達式的結尾
?
?
?
?
?
正向否定預查 ?放在表達式的開頭
?
?
?
反向肯定預查
?
?
?
反向否定預查
?
零寬度斷言
?
?
56后面必須跟上9
?
?
前面不能是4
?
?
?
零寬度斷言 不匹配內容 只匹配中間的內容
?
也不計算在分組里面
?
?
?
把前面和后面變成零寬度斷言 ?主要中間的部分
?
?
?
?
?
?
?
反向在前面
正向在后面
?
?
?
?
?
模式修正符
?
?
?
?
修正正則表達式 sigmex
?
?
?
前面搭配后面的字母
搭配i忽略大小寫
?
?
?
?
?
?
?
?
?
A 忽略大小寫 b 只能是小寫
?
?
?
?
?
邊界匹配器
?
?
?
?
?
讓正則匹配更加精準
?
?
?
行首
行尾
和單詞首
單詞尾
?
?
?
一般是空格
?
?
?
?
Same 結尾
?
?
?
?
總結和實例講解
?
?
?
Js 里面的用法 ?斜線開頭
?
?
?
s出現可以 不出現也可以
?
?
?
?
和兩邊的斜杠是沖突的
?
問號和其他字符組合放在括號的開頭的時候要注意其特殊的用法
?
?
?
?
?
這里\W 本來就是特殊含義 不需要轉義成其真正含義
?
?
Url 帶參數
網上的正則不一定是想要的
?
?
?
?
正則匹配:
分類 進行匹配
?
?
?
三個都寫到或者里面其會匹配最大的
?
aa='資中縣雙河街道辦事處'
comp=re.compile(r'(街道辦事處|街道|處)')
res=comp.findall(aa)
?
把最長的寫在最前面
?
數字中間不能用橫杠
?
?
正則只適合于匹配 有規則的 且中間無其他干擾的情況的識別
?
四川自治區內江市資中縣雙河街道辦事處安木店村7單元12號
?
地址這種東西感覺不能用正則匹配出來 ??不管是貪婪,勉強還是侵占都無法實現 多個分組 并且中間穿插了其他字符的情況
?
固定的800多種組合是可以實現的
?
?
?
固定一種規則是可以的 ?中間沒有問號 ?但是開始位置還是無法確定
?
上面區的情況 和園的情況 都可以長的部分放到前面去解決
?
?
這種和其他混淆度太高 ?直接不用其作為判斷標準 ?刪除好了
?
?
?
?
?
?
?
https://edu.51cto.com/center/course/lesson/index?id=344062
?
?
?
正則課程介紹
?
Match tracer ?驗證正則
?
?
?
文檔
工具字典
?
?
語法界面
?
?
?
?
?
字符類 普通 所見即所得
?
?
?
中括號 字符范圍
?
?
?
?
高亮表示匹配到了
?
?
只能匹配a到c
中括號里面的任意一個
?
?
^是管整個方括號里面的東西
?
后面跟上at
?
?
正則 上一次匹配的結束是下一次匹配的開始 ?重點
?
?
第二次從f開始匹配
?
?
第二次從a開始匹配 ?匹配不到 然后從t開始匹配
?
?
?
匹配除了a到d 的任意一個字符
?
?
?
圓括號里面的內容是一個整體 ???豎線 ?或的意思
?
?
分組里面匹配多個重復字符
?
?
?
?
?
預定義字符類
?
?
?
?
?
每一行結束都有一個換行符
?
?
換行符的匹配
換行符 空白 ?肉眼看不見
?
?
匹配所有字符
?
?
?
?
?
字母數字下劃線
?
\W 除了字母 數字 下劃線
?
?
?
量詞 貪婪 ?勉強 ?侵占
?
?
?
量詞模式
?
?
X 表示正則表達式
?
量詞盡量多的匹配字符串
https://www.cnblogs.com/kevin-yuan/archive/2012/09/02/2667428.html
貪婪 勉強 侵占
默認都是貪婪模式:盡量多的匹配目標串
?
?
?
?
?
單獨的時候是匹配一個分號 但是加上后面的\d之后就匹配到了兩個分號
問題
?
?
匹配了兩個而不是三個
量詞種類
?
勉強在貪婪模式上面加了個問號 ?每一項都是
侵占就是在貪婪模式的后面加了一個加號
?
貪婪:盡可能多的匹配 且能夠回退?
勉強:盡量少的匹配目標串 ?但不是不匹配 有就匹配
侵占:盡量多的匹配目標串且不回退
?
?
?
貪婪 勉強 ?侵占 詳解
?
?
?
?
回退 ?第二次匹配的時候 只有一個a了 不夠了 ?但是可以回退 ?之前匹配過的一次a
再第二次匹配的時候也參與了 ?回退
?
前面一個a都不匹配
整個表達式 匹配一個a
匹配三次
?
?
每次匹配兩次 ?只能匹配一次
?
?
?
?
一個一個往后吐 ?吐出第一個的時候 ??表達式就能拿到匹配了
?
一次匹配
?
?
?
沒次匹配一個a
?
?
?
匹配不到
?
?
?
?
一次匹配
?
?
?
只能匹配一次 勉強不能回退
?
?
?
匹配不到
?
?
?
?
兩次匹配 不回退嗎
?
回退對大括號無效?
?
?
一次匹配
?
?
?
匹配一次 ?吐一個a
吐一個a ?把后邊的a 加入
?
?
一次匹配 ?這里為什么不回退了?
回退是指多匹配的吐出來 補充后面的,而不是前面的去掉一部分 和后面的一起匹配
?
?
不匹配
?
不回退
?
?
貪婪 勉強 ?侵占實例講解
?
?
?
?
?
盡可能多的匹配 ?那就就會去匹配 第二個foo
第一個foo 就匹配不到了
首先吐出一個o 再吐一個o 最后吐個f 就可以匹配了
?
?
?
一次匹配
?
?
第二次匹配的過程
?
?
兩次匹配
?
?
首先匹配所有的字符 ?因為不回退 ?所以一次都匹配不上
?
?
?
?
?
剛開始匹配 ?到美元符號之前的所有 ?然后吐字符 到小寫的d
?
?
?
一次匹配
?
?
?
剛開始匹配2 但后面不是字母 所有不行 繼續 ?直到上面
第一次匹配
?
?
?
?
第二次匹配
?
?
第三次
?
?
這里開始就不行了
?
?
?
3次匹配
?
?
一次都不能匹配
?
?
?
?
?
捕獲組
?
?
?
把取出的數字都放在分組里面 ?小括號里面
?
?
?
?
?
?
分組匹配到的內容
?
?
高亮
?
?
?
?
代碼例子
?
?
兩次匹配
反向引用
?
?
編號方式
從左到右 從外到里進行編號
?
最外面是第一個分組 0 整個表達式
?
?
?
?
反向引用
?
?
?
?
?
匹配兩個數字
?
是對整匹配結果的替換?不能只替換其中一部分? 錯 應該是可以的 先拿出分組 在替換需要替換的部分
?
前面括號里的內容再出現一次
?
?
?
?
?
?
?
搞不懂
問題
?
?
非捕獲組 ?零斷言表達式
?
?
?
?
?
?
?
每次都有一個分組
?
?
?
沒有子分組了 ?只留下全部匹配 ?分組匹配就不要了
?
零寬度斷言
?
?
正向肯定預查 ?一般放到表達式的結尾
?
?
?
?
?
正向否定預查 ?放在表達式的開頭
?
?
?
反向肯定預查
?
?
?
反向否定預查
?
零寬度斷言
總結