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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

js 正则学习小记之左最长规则

發布時間:2025/3/14 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js 正则学习小记之左最长规则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
js 正則學習小記之左最長規則 原文:js 正則學習小記之左最長規則

昨天我在判斷正則引擎用到的方法是用 /nfa|nfa not/ 去匹配 "nfa not",得到的結果是 'nfa'
其實我們的本意是想得到整個字符串 "nfa not" 的,可卻只得到了 'nfa'

再來看個例子,/an (nfa)?(nfa test)?/ 去匹配 "an nfa test",如果和上面一樣的解釋,那應該只得到 'an nfa'
接著第一個捕獲組里是 'nfa' 第二個捕獲組里是空。

我們的本意是盡量多的去匹配所有字符串,可是得到的卻是 'an nfa' 這不是我們期望的結果,為什么它不去匹配第二個呢?
因為傳統型NFA引擎遵循的原則是從左到右按順序去匹配,滿足要求就停止。
多分支表達式 /nfa|nfa not/ 在 nfa 匹配成功的時候,就不會去繼續匹配第二個表達式了。
捕獲組也是一樣,當 (nfa)? 表達式匹配成功,就保存當前匹配狀態,只會接下去匹配 'an nfa' 后面的部分,而不會回到 'an ' 這里重新匹配一下表達式。

所以 左最長規則 的意思就是把你希望得到的最長的那個表達式寫在左邊,這樣他就會按順序匹配到我們期望的內容了。
/nfa not|nfa/ 去匹配 "nfa not",用 /an (nfa test)?(nfa)?/ 去匹配 "an nfa test"

好吧,今天又是水文一篇,不過好歹學了一丁點新東西了。

posted on 2014-05-10 19:17 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/3720881.html

總結

以上是生活随笔為你收集整理的js 正则学习小记之左最长规则的全部內容,希望文章能夠幫你解決所遇到的問題。

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