我有以下数据:
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,它可以找到所有没有星号的分数,所以我使用了一个负的查找方法:
(?<=\*)(\d{1,2}-\d\/\d)当然(因为没有什么是容易的),Regex认为13中的1是查找的一部分:

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

这不是我需要的。我试图让Regex忽略字符串中两个星号之间的所有数字。
有什么办法让它满足我的需求吗?
谢谢!
发布于 2021-12-07 16:35:22
关于
Regex认为13中的1是朝后的一部分。
1不是查找的一部分,但是当左侧没有asterix时,断言(?<=\*)是真的。
这个断言在很多位置上都是正确的,只有在*1之后,它才能匹配模式(\d{1,2}-\d\/\d),这就是为什么在没有前面1的情况下得到匹配。
您可以省略捕获组以只获得匹配,并添加一个前导单词边界\b,以防止在搜索匹配的每个位置触发查找,只有当它遇到字符串中的一个单词边界时。
请注意,如果斜杠不是模式的分隔符,则不必转义正斜杠。
\b(?<!\*)\d{1,2}-\d/\dhttps://stackoverflow.com/questions/70263452
复制相似问题