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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

openresty开发系列17--lua中的正则表达式

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openresty开发系列17--lua中的正则表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

與其他腳本語言不同的是,Lua并不使用POSIX規范的正則表達式[4](也寫作regexp)來進行模式匹配。主要的原因出于程序大小方面的考慮:實現一個典型的符合POSIX標準的regexp大概需要4000行代碼,這比整個Lua標準庫加在一起都大。權衡之下,Lua中的模式匹配的實現只用了500行代碼,當然這意味著不可能實現POSIX所規范的所有更能。然而,Lua中的模式匹配功能是很強大的,并且包含了一些使用標準POSIX模式匹配不容易實現的功能。 Lua正則中的特殊字符(元字符)包括如下幾種:( ) . % + - * ?[ ] ^ $ lua正則支持其大寫形式,大寫形式代表非,即有%A = ^%a,%A表示與任意非字母配對。

元字符描述表達式實例完整匹配的字串字符重復(數量詞)預定義字符集分組邊界匹配(屬于零寬斷言)%b
普通字符除去%.[]()^$*+-?的字符,匹配字符本身KanaKana
.匹配任意字符Ka.aKana
%轉義字符,改變后一個字符的原有意思。當后面的接的是特殊字符時,將還原特殊字符的原意。%和一些特定的字母組合構成了lua的預定義字符集。%和數字1~9組合表示之前捕獲的分組K%wna
%%na%%
(a)n%1
Kana
%na%
ana
[...]字符集(字符類)。匹配一個包含于集合內的字符。[...]中的特殊字符將還原其原意,但有下面幾種特殊情況
1. %],%-,%^作為整體表示字符']','-','^'
2. 預定義字符集作為一個整體表示對應字符集
3. 當]位于序列的第一個字符時只表示字符']'
4. 形如[^...],[...-...]有特定的其他含義
[a%]na
[%a]na
[%%a]na
[]]na
[%]]na
[a-]na
%na
wna
wna
]na
]na
-na
[...-...]-表示ascii碼在它前一個字符到它后一個字符之間的所有字符[a-z]ana
[^...]不在...中的字符集合。[^0-9]na
[^^0-9]na
Kna
Kna
*表示前一個字符出現0次或多次[0-9]*
[a-z]*9*
2009
na
+表示前一個字符出現1次或1次以上n+[0-9]+n2009
?表示前一個字符出現0次或1次n?[0-9]+2009
%s空白符[ \r\n\t\v\f]an[%s]?9an 9
%p標點符號an[%p]9an.9
%c控制字符??
%w字母數字[a-zA-Z0-9][%w]+Kana9
%a字母[a-zA-Z][%a]*Kana
%l小寫字母[a-z]-
%u大寫字母[A-Z]-
%d數字[0-9]-
%x16進制數[0-9a-fA-F]-
%zascii碼是0的字符-
(...)表達式中用小括號包圍的子字符串為一個分組,分組從左到右(以左括號的位置),組序號從1開始遞增。ab(%d+)
(%d+)%1
ab233
123123
^匹配字符串開頭^(%a)%w*abc123
$匹配字符串結尾%w*(%d)$abc123
%bxy平衡匹配(匹配xy對)。這里的x,y可以是任何字符,即使是特殊字符也是原來的含義,匹配到的子串以x開始,以y結束,并且如果從x開始,每遇到x,計算+1,遇到y計數-1,則結束的y是第一個y使得計數等于0。就是匹配成對的符號,常見的如%b()匹配成對的括號%b()
%d+%b()
(3+4(x*2))
2(3+4(x*2))

轉載于:https://www.cnblogs.com/reblue520/p/11429825.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的openresty开发系列17--lua中的正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

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