z761003 发表于 2022-2-11 21:28:34

被个看似简单的正则整蒙了[已解决]

本帖最后由 z761003 于 2022-2-12 22:36 编辑

$a="-[特锐德]"
$winTocodeREGEXP1='\[*-(\D{3,5})\]'
MsgBox(0,"",StringRegExp($a,$winTocodeREGEXP1,1))
用上面的正则表达式感觉明明选不到结果的呀,可结果却是 [特锐德
我式子中的 *- 不是说明了要带条小横线么,而且小横线得在 [ 之后的,可字符串中 [ 后没小横线,再一个就是 [ 为什么也会被选出来呢
我对我的式子解释如下,大家看下我哪里理解错了:
\[意思有个 [
* 意为 [ 后有若干个不确定的字符
- 意为 有条小横线
( 我要取的是 ( 后到 ) 里的内容
\D{3,5}三到五个非数字字符
\] 结尾是 ]


补充下,小横线如果转义下,即'\[*\-(\D{3,5})\]'   选出的结果也是[特锐德

afan 发表于 2022-2-11 21:49:26

捕获没错的,你仔细看看你要捕获的组 (\D{3,5})
是 - 号后面开始,到 ] 结束的非数字字符,不就是[特锐德 么?


\[意思有个 [
* 意为 [ 后有若干个不确定的字符
这里错了,应该是有 0到很多个 [

haijie1223 发表于 2022-2-11 22:03:09

afan 发表于 2022-2-11 21:49
捕获没错的,你仔细看看你要捕获的组 (\D{3,5})
是 - 号后面开始,到 ] 结束的非数字字符,不就是[特锐 ...

楼主的意思应该是要求[]里面必须有个-,他提供的文本是需要排除掉的,他想知道为什么现在反而匹配到了。
*前面加个点: \[.*-(\D{3,5})\]

z761003 发表于 2022-2-11 22:07:43

哈哈 ,楼上两位前辈都说得很正确,我后面也发现了,少了个 . 不能没点就直接来 * 谢谢前辈

z761003 发表于 2022-2-11 22:09:31

发贴的为什么不能打赏呢,总觉得问题得到热心的回答想赏点小小费之类的出去{:1_213:}

afan 发表于 2022-2-11 22:25:52

haijie1223 发表于 2022-2-11 22:03
楼主的意思应该是要求[]里面必须有个-,他提供的文本是需要排除掉的,他想知道为什么现在反而匹配到了。
...

是这样~ 我只是给他解释正则捕获的没有错,言下之意也就是你说的,如果不是想要的结果就要修改表达式。

afan 发表于 2022-2-11 22:28:34

z761003 发表于 2022-2-11 22:09
发贴的为什么不能打赏呢,总觉得问题得到热心的回答想赏点小小费之类的出去

悬赏贴只能在发帖时选择~ 不过通常使用评分功能就行了,还是免费的~

z761003 发表于 2022-2-11 23:05:38

本想给两位评点分,结果一看,,,都是财主爷,不缺分,{:1_240:}罢了,就给谢吧

haijie1223 发表于 2022-2-12 13:46:22

z761003 发表于 2022-2-11 23:05
本想给两位评点分,结果一看,,,都是财主爷,不缺分,罢了,就给谢吧

解决了就改下标题
页: [1]
查看完整版本: 被个看似简单的正则整蒙了[已解决]