lua中的捕获(capture)
来源:互联网 发布:115网盘mac 编辑:程序博客网 时间:2024/06/06 02:02
说到捕获,就要先说模式。
说到模式,就要先说字符分类。
字符分类是这个意思,%d代表数字,%a代表字母,%p代表标点字符,等等这样的就是字符分类,下面贴一张完整的表格
再说模式,模式粗略来说可以理解为字符分类的组合成了一个模式。比如:%d%d/%d%d/%d%d%d%d可以搜索dd/mm/yyyy格式的日期。
在模式中还存在一些魔法字符,它们具有特殊的含义。比如:
( ) . % + - * ? [ ] ^ $
这样的就是特殊字符,我就不解释每个字符什么意思了,都知道。
对于lua来说,模式就是普通的字符串。但是模式只有在模式函数中才会发挥作用。至于什么是模式函数,我觉得是g开头的函数,比如string.gsub string.gmatch 不过我也不确定,可以留言交流。
接下来说一说捕获,捕获其实就是根据一个模式从目标字符串中抽出匹配于该模式的内容。在指定捕获时,应将模式中需要捕获的部分写到一对圆括号中。
比如:
pair = "name = Anna"
key, value = string.match(pair, "(%a+)%s*=%s*(%a+)")
print(key, value) -->name Anna
对于具有捕获的模式,函数string.match会将所有捕获到的值作为单独的结果返回。它会将目标字符串切成多个捕获到的部分并返回。
假设要在一个字符串中寻找一个由单引号或双引号括起来的子串。那么可以用这样的模式"["'].-["']",它表示一个引号后面是任意内容及另外一个引号。但是,这种模式在处理像"it's all right"这样的字符串就会出问题。要解决这个问题,可以捕获第一个引号,然后用它来指定第二个引号:
s = [[then he said: "it's all right"!]]
q, quotedPart = string.match(s, "([\"'])(.-)%1")
print(quotedPart) -->it's all right
print(q) -->"
第一个捕获是引号字符本身,第二个捕获是引号中的内容,即与".-"相匹配的子串。
上面的%1表示和前面相同的引号([\"'])
- lua中的捕获(capture)
- Lua 中的捕获
- Lua中的捕获
- Lua中的捕获
- Capture Thumbnails from Video Files (捕获视频中的屏幕截图)
- Lua中的捕获(string.find的综合使用)
- JS中的事件冒泡(Bubble)和事件捕获(capture)以及如何阻止事件的冒泡
- unity3d中的lua脚本异常捕获
- 正则基础之——捕获组(capture group)
- 正则基础之——捕获组(capture group)
- 正则基础之——捕获组(capture group)
- jdk7正则表达式-命名捕获组(named capture)
- 正则基础之——捕获组(capture group)
- oracle 11g streams 捕获(capture)进程使用示例
- 正则基础之——捕获组(capture group)
- 理解SQL Server变更数据捕获(Change Data Capture)
- 正则基础之——捕获组(capture group)
- 正则基础之——捕获组(capture group)
- 412. Fizz Buzz
- 【吐槽】B站大量番剧下架,程序猿们这时都在干什么?
- Postgresql设置search_path
- 20170717【笔记】第三讲:爬虫基础
- hi3519 编译问题
- lua中的捕获(capture)
- 各种常见排序算法(复习)
- 李洋疯狂C语言之用递归解决李白喝酒问题(附填空题解法)
- Android活动与服务之间的通信
- 如何解决failed to push some refs to 'git@github.com:mail/file.git'
- PSSQL DEVELOPER连接外部数据库(oracle to oracle)
- go语言资源大全
- Mycat 开发调试环境配置-开启二次开发之路
- 石子归并 【区间DP】 Codevs1048