好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > js 正則學習小記之匹配字符串字面量優化篇

js 正則學習小記之匹配字符串字面量優化篇

熱門標簽:怎么在高德地圖標注行走軌跡 施工地圖標注怎么做 深圳400電話辦理那家好 襄陽房產電銷機器人招商 百度地圖標注飯店位置怎么 個性化地圖標注在線 安徽移動外呼系統 百度地圖標注名編輯 清遠陽山400電話號碼如何申請

昨天在《js 正則學習小記之匹配字符串字面量》談到 /"(?:\\.|[^"])*"/ 是個不錯的表達式,因為可以滿足我們的要求,所以這個表達式可用,但不一定是最好的。
從性能上來說,他非常糟糕,為什么這么說呢,因為 傳統型NFA引擎 遇到分支是從左往右匹配的,
所以它會用 \\. 去匹配每一個字符,發現不對后才用 [^"] 去匹配。
比如這樣一個字符串: "123456\'78"90"
16 個字符,除了第一個 " 直接匹配成功,還剩余 15 個,只有 2 個轉義(4 個字符),所以 \. 會失敗 10 次,只有 2 次成功。
10 次匹配失敗,需要回溯后用 [^"] 才能匹配成功,當然最后一個 " 會直接匹配成功。

很明顯,正常的字符串不可能全是轉義,正常的字符串才是主流,當然不排除有人故意全轉義的情況。
所以這個正則需要10次回溯后才能匹配完成,如果字符串增長到 1K 1M 腫么破呢?
所以我們要修改下這個正則,前后換下位置么?
難道是 /"(?:[^"]|\.)*"/ ? 呵呵,好像不太對,這樣的話轉義就不能被匹配了。

所以還要修改下 /"(?:[^"\\]|\.)*"/ 這樣就OK了,遇到 \ 轉義就會用 \\. 去嘗試匹配。

可是還是有問題,因為我們在 [^"\\] 過濾掉了 n 所以沒法匹配多行字符的情況。

js 中 字符串用 折行是允許的,但是修改后的 正則 沒法匹配這樣的字符串了,所以我們還得繼續修復。

因為 . 沒法匹配換行,所以我們要用其他方式表達。
. 是用于匹配除換行符之外的所有字符,難道我們要 [.\n] 來表示么?
這樣是不對的,因為 [] 字符集中的 . 不再表示除換行符之外的所有字符,而是字符 . 也就是他本身一個字符而已。
那怎么辦呢?
其實換個思路,
d 表示 0-9
D 表示 [^0-9]
那么 [\d\D] 就表示所有了,不是么。(新人朋友不知道能不能消化這個知識點。)
同理 [\s\S] [\w\W] 同樣可以。
所以 /"(?:[^"\\]|\[\d\D])*"/ 這樣就滿足我們的要求了。

效果不錯。
回頭過來分分析下他現在的性能吧。
還是這個字符串: "123456'78\"90" , 正則 /"(?:[^"\\]|\\[\d\D])*"/

16 個字符,除了第一個 " 直接匹配成功,還剩余 15 個,有 2 個轉義(4 個字符),[^"\\] 能匹配成功 10 個字符,只有 2 次失敗。
為什么不是 4 次失敗呢,明明有4個字符啊。\\ 雖然是2個字符,但是讀到第一個 \ 就匹配失敗,然后用 \\[\d\D] 匹配成功,
占用掉了兩個字符 \\ 下次用下一個o開始匹配,所以只有2次回溯。

只有 2 次需要回溯,然后用 \\[\d\D] 匹配成功。當然最后一個 " 還是會直接匹配成功。
所以從 10 次回溯,減少到了 2 次,雖然正則比昨天臃腫了很多,但至少性能提升了不止一個等級。

OK,今天的分享完畢,明天見。

您可能感興趣的文章:
  • js 正則表達式學習筆記之匹配字符串
  • 正則匹配密碼只能是數字和字母組合字符串功能【php與js實現】
  • String字符串匹配javascript 正則表達式
  • js正則學習小記之匹配字符串字面量
  • JavaScript正則表達式匹配字符串字面量
  • 一個關于JS正則匹配的踩坑記錄

標簽:延邊 中衛 黑河 阜陽 臨夏 駐馬店 南昌 欽州

巨人網絡通訊聲明:本文標題《js 正則學習小記之匹配字符串字面量優化篇》,本文關鍵詞  正則,學習,小記,之,匹配,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《js 正則學習小記之匹配字符串字面量優化篇》相關的同類信息!
  • 本頁收集關于js 正則學習小記之匹配字符串字面量優化篇的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 尹人香蕉久久99天天| 好爽好爽| 亚洲成a人片在线观| 疯狂婬荡婬乱荡的少妇网站 | 国模啪啪一区二区三区| 色婷婷精品综合久久狠狠| 日本电影《入室暴行》| 屁股撅好把腚眼子扒开bl灌水| 粉色视频免费入口| H无码里番肉片在线播放| 日韩天天操| 97亚洲AV无码国产精色情园| 女性尿急尿频尿痛小妙招| 5一级潘金莲大片| 国产真人真事一级A片| 啊?学长?好硬?拔出来?罗莉岛| 日本美女日b| 在线bt天堂网www| 卫生间深深挺进老师小泬网站视频 | 国产亂伦视频在线观看| 男男被室友男友内???了小说| ?国产精品海角社区| 两男共享一女h| 福利院体检120秒五次| 无码人妻精品一区二区在线看| 麻豆国产精品番甜甜七夕| 穿裙子被同桌摸出水好爽| 国产丰满乱子伦无码| 亚洲人成电影网站免av费无码| 上流夫妻| 99久9在线视频| 国产色产综合色产在线观看视频| 慈芬好爽?好紧?宝贝别夹阿昌| 蜜柚视频影院在线播放| 中国特级黄色片| 岳好多水?快?深点| 性欧美孕交hd| 国产精品久久高潮呻吟无码| httpxvideos.com| japanese色视频在线播放免费| 韩国色情巜肉欲办公室2|