找回密码
 加入
搜索
楼主: 邪恶海盗

[AU3基础] 请教一个正则表达式提取字符串的问题

[复制链接]
 楼主| 发表于 昨天 20:39 | 显示全部楼层
zghwelcome 发表于 2025-5-23 20:32
* + 都是贪婪模式(尽可能多的匹配),前者可以匹配空,后者至少匹配一个字符 ...

那如果字符串是ABC[XXX3-1,15:29]这样用+会报错?


发表于 昨天 22:53 | 显示全部楼层
邪恶海盗 发表于 2025-5-23 20:39
那如果字符串是ABC[XXX3-1,15:29]这样用+会报错?

因为这个字符串里面没有水平字符 (\h ,即空格、TAB符),所以没有匹配成功
 楼主| 发表于 昨天 23:00 | 显示全部楼层
zghwelcome 发表于 2025-5-23 22:53
因为这个字符串里面没有水平字符 (\h ,即空格、TAB符),所以没有匹配成功 ...

所以还是用*适应面更广一些?


二○二五年五月二十三日
 楼主| 发表于 4 小时前 | 显示全部楼层
正则分析:

1.将字符串划按想得到的结果分成几个部分,此示例需要提取第3部分(标示红色):



2.使用正则匹配每个部分:
第一部分,由于存在中文、英文、水平空格、特殊符号(如]),所以需要用 . (任意单字符)来表示,而由于字符数量不等,所以用 .* 表示多个单字符(*表示重复)
第二部分,空格,使用 \h 表示
第三部分,字符数量不等且存在特殊符号(如-,:),同样用 .* 来表示
第四部分,符号],使用 \] 来表示

3.组合正则,排除第一、二、四部分,提取第三部分(需要用小括号()包起来),所以表达式为:
.*\h(.*)\]

还有一个问题,第四部分]右边的不写正则所以默认排除么?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 4 小时前 | 显示全部楼层
只要有定位的字符 ] 就行了,且由于定位符号 ] 的唯一性,前后修辞表达式都不需要,因此这样就行了
(\H+)]
 楼主| 发表于 3 小时前 | 显示全部楼层
afan 发表于 2025-5-24 13:40
只要有定位的字符 ] 就行了,且由于定位符号 ] 的唯一性,前后修辞表达式都不需要,因此这样就行了
(\H+)] ...

测试输出结果有效,但看不懂这个写法,能不能解释一下?


发表于 3 小时前 | 显示全部楼层
本帖最后由 3131210 于 2025-5-24 14:28 编辑

匹配 ] 符号前面的 非空白字符

像\d  就是匹配数字  \D  就是匹配非数字
正则里面大小写的区别就是这样
\s  空白字符  \S  非空白字符


至于你问的 第四部分 ] 右边 不是不管  如果你是匹配全部 如果条件满足  还有 符号 ] 的右边 还有符号] 且满足它的前面为非空字符串  就会匹配到第二组 第三组 第四组



也可以用这个正则提取   ([0-9,-:]+)
 楼主| 发表于 3 小时前 | 显示全部楼层
3131210 发表于 2025-5-24 14:18
匹配 ] 符号前面的 非空白字符

碰到空白时就自动丢弃?
发表于 3 小时前 | 显示全部楼层
因为规则就是 非空字符串+符号]   如果是空的 就是匹配不到  你也可以理解丢弃
 楼主| 发表于 3 小时前 | 显示全部楼层
3131210 发表于 2025-5-24 14:33
因为规则就是 非空字符串+符号]   如果是空的 就是匹配不到  你也可以理解丢弃 ...

这里]不需要加\转义?
发表于 3 小时前 | 显示全部楼层
邪恶海盗 发表于 2025-5-24 14:43
这里]不需要加\转义?

右方括号 ] 只有在字符集([...])中才有特殊含义,用于表示字符集的结束。在字符集外,"]" 就只是一个普通的字符,不用转义

\H+)]这里的]符号只起到定位的作用
 楼主| 发表于 2 小时前 | 显示全部楼层
3131210 发表于 2025-5-24 14:49
右方括号 ] 只有在字符集([...])中才有特殊含义,用于表示字符集的结束。在字符集外,"]" 就只是一个普 ...

我X,这么多道道,正则真是博大精深啊...


发表于 半小时前 | 显示全部楼层
3131210 发表于 2025-5-24 14:18
匹配 ] 符号前面的 非空白字符

像\d  就是匹配数字  \D  就是匹配非数字

,-这两个表示什么?
可以不用也能匹配
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2025-5-24 17:51 , Processed in 0.073843 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表