* + 都是贪婪模式(尽可能多的匹配),前者可以匹配空,后者至少匹配一个字符 ...
那如果字符串是ABC这样用+会报错?
邪恶海盗 发表于 2025-5-23 20:39
那如果字符串是ABC这样用+会报错?
因为这个字符串里面没有水平字符 (\h ,即空格、TAB符),所以没有匹配成功 zghwelcome 发表于 2025-5-23 22:53
因为这个字符串里面没有水平字符 (\h ,即空格、TAB符),所以没有匹配成功 ...
所以还是用*适应面更广一些?
二○二五年五月二十三日 正则分析:
1.将字符串划按想得到的结果分成几个部分,此示例需要提取第3部分(标示红色):
2.使用正则匹配每个部分:
第一部分,由于存在中文、英文、水平空格、特殊符号(如]),所以需要用 . (任意单字符)来表示,而由于字符数量不等,所以用 .* 表示多个单字符(*表示重复)
第二部分,空格,使用 \h 表示
第三部分,字符数量不等且存在特殊符号(如-,:),同样用 .* 来表示
第四部分,符号],使用 \] 来表示
3.组合正则,排除第一、二、四部分,提取第三部分(需要用小括号()包起来),所以表达式为:
.*\h(.*)\]
还有一个问题,第四部分]右边的不写正则所以默认排除么?
只要有定位的字符 ] 就行了,且由于定位符号 ] 的唯一性,前后修辞表达式都不需要,因此这样就行了
(\H+)] afan 发表于 2025-5-24 13:40
只要有定位的字符 ] 就行了,且由于定位符号 ] 的唯一性,前后修辞表达式都不需要,因此这样就行了
(\H+)] ...
测试输出结果有效,但看不懂这个写法,能不能解释一下?
本帖最后由 3131210 于 2025-5-24 14:28 编辑
匹配 ] 符号前面的 非空白字符
像\d就是匹配数字\D就是匹配非数字
正则里面大小写的区别就是这样
\s空白字符\S非空白字符
至于你问的 第四部分 ] 右边 不是不管如果你是匹配全部 如果条件满足还有 符号 ] 的右边 还有符号] 且满足它的前面为非空字符串就会匹配到第二组 第三组 第四组
也可以用这个正则提取 (+)
3131210 发表于 2025-5-24 14:18
匹配 ] 符号前面的 非空白字符
碰到空白时就自动丢弃? 因为规则就是 非空字符串+符号] 如果是空的 就是匹配不到你也可以理解丢弃 3131210 发表于 2025-5-24 14:33
因为规则就是 非空字符串+符号] 如果是空的 就是匹配不到你也可以理解丢弃 ...
这里]不需要加\转义? 邪恶海盗 发表于 2025-5-24 14:43
这里]不需要加\转义?
右方括号 ] 只有在字符集([...])中才有特殊含义,用于表示字符集的结束。在字符集外,"]" 就只是一个普通的字符,不用转义
\H+)]这里的]符号只起到定位的作用
3131210 发表于 2025-5-24 14:49
右方括号 ] 只有在字符集([...])中才有特殊含义,用于表示字符集的结束。在字符集外,"]" 就只是一个普 ...
我X,这么多道道,正则真是博大精深啊...
3131210 发表于 2025-5-24 14:18
匹配 ] 符号前面的 非空白字符
像\d就是匹配数字\D就是匹配非数字
,-这两个表示什么?
可以不用也能匹配 redapple2008 发表于 2025-5-24 17:00
,-这两个表示什么?
可以不用也能匹配
应该是,-:吧,就是单纯指的这三个符号...
页:
1
[2]