首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex:负查找与转义星号不工作的权利

Regex:负查找与转义星号不工作的权利
EN

Stack Overflow用户
提问于 2021-12-07 16:12:45
回答 1查看 63关注 0票数 0

我有以下数据:

代码语言:javascript
复制
FIT 13.5 ON 16 LNR, LWD[GR,RES,PWD] @ 10340, M12.8, NO SWC, *13-3/8 X 16* (13.9) EXP LNR @ 8696-10340, FIT 14.4, LWD(GR, RES, PWD  
FIT 12.4 ON 20, LWD[ARC,PWD  
FIT 15.0 ON 16, LWD[ARC,PWD]  
FIT 13.3 ON 11-3/4, LWD[ARC,SON,PWD] @ 12065, PREP TO DRILL  
9-5/8 LNR @ 11695-16163, FIT 14.9, LWD[ARC,SON,DEN,NEUT,CMR,TESTRAK], (SON FAILED), NO SWC, REAMING (TO RUN CSG ) 

我正在尝试编写一个Regex,它可以找到所有没有星号的分数,所以我使用了一个负的查找方法:

代码语言:javascript
复制
(?<=\*)(\d{1,2}-\d\/\d)

当然(因为没有什么是容易的),Regex认为13中的1是查找的一部分:

如果我将其改为正向后,它的工作原理是,如果我想要找到带有星号的分数:

这不是我需要的。我试图让Regex忽略字符串中两个星号之间的所有数字。

有什么办法让它满足我的需求吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-12-07 16:35:22

关于

Regex认为13中的1是朝后的一部分。

1不是查找的一部分,但是当左侧没有asterix时,断言(?<=\*)是真的。

这个断言在很多位置上都是正确的,只有在*1之后,它才能匹配模式(\d{1,2}-\d\/\d),这就是为什么在没有前面1的情况下得到匹配。

您可以省略捕获组以只获得匹配,并添加一个前导单词边界\b,以防止在搜索匹配的每个位置触发查找,只有当它遇到字符串中的一个单词边界时。

请注意,如果斜杠不是模式的分隔符,则不必转义正斜杠。

代码语言:javascript
复制
\b(?<!\*)\d{1,2}-\d/\d

Regex demo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70263452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档