在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. Lua实现模式匹配,没有使用POSIX正则表达式和Perl正则表达式。 一个典型的POSIX正则实现需要超过4000多行代码,比所有Lua语言标准库总大小的一半还大。 Lua实现模式匹配代码不到600行。不如POSIX强大,但够用。 字符串标准库基于模式4个函数:find(返回出现模式的位置),match(返回和模式匹配的字符串,以及位置),gmatch(返回出现模式的迭代器),gsub(出现模式的地方替换字符串,以及替换次数)。 2. 字符分类:
除此之外,大写形式代表其补集。比如,%A代表任意非字母的字符。 除此之外,自定义字符分类。使用方括号。比如,[0-9] 等价于 %d。 备注:短横线的使用,代表某段字符范围。 自定义补集,使用^。比如,[^\n]代表除换行外其他字符。 注意:使用字符分类,最好括起来。 3. 修饰符
举例:1. * 使用例子,为了匹配像 () 或 () 这样的空 括号对,就可以使用模式 %(%s*%) 2. 跟 修饰符*总是匹配能匹配的最长序列不同。修饰符 - 只会匹配最短序列,比如找到第一个字母。 /%*.*%*/代表匹配第一个/*和最后一个/* (类似正则的贪婪匹配)。 /%*.-%*/代表匹配到找到第一个*/ 3. ?举例,比如匹配 +1,-20,78 这三个数值。[+-]?%d+ 4. lua中的修饰符只作用于一个字符模式。 4. 其他 1. ^和$代表从目标字符串的开头或至结尾匹配。只有位于模式的开头和结尾时才有特殊含义。比如查找以什么开头或结尾等 ^[+-]%d$。 2. %b 匹配成对的字符串。比如%xy表示以x开始y结尾 3. %f[char-set] 前置模式,代表 只有在后一个字符位于 char-set 内而前一个字符不在时匹配一个空字符串。举例: s =”the anthem is the theme” Print((string.gsub(s ,”%f[%w]the%f[%W]”,” one ”))) --> one anthem is one theme 注意两个one,第一个字符前当成空字符
|
请发表评论