如何用正则式提取两个字符之间的数值?

使用问题 · 893 次浏览
大头猫米 创建于 2024-03-25 20:06

codeA[123456]codeB

提取codeA和codeB之间的数值

提取后获得 [123456]

 

已知用.+(?=codeB)可以提取codeB之前的数值

即 codeA[123456]codeB  通过 .+(?=codeB) 可以获得  codeA[123456]

然后怎么获得codeA[之后的数值呢?

 

(当然这是两步走的方法,如果能一步到位的话,又怎么写?)

 

我有查过正则式文档

.+(?=字符)  是提取之前的字符

按道理 .+(?<=字符)是提取之后的字符,但是实测无效

无论是 .+(?=字符) .+(?<=字符),输出的结果都是提取字符之前的数值..

不知道是不是bug

大头猫米 最后更新于 2024/3/25

回复内容
CL 2024-03-25 20:49
#1

用提取组。codeA\[(.*?)\]codeB

可以参考这个动作中的正则文档,比较详细:正则速查手册 - by 咿呀杀杀 - 动作信息 - Quicker 

建议使用chatGPT帮忙写正则并且解释。

大头猫米 回复 CL 2024-03-25 21:17 :

测试了用这个正则式输出的结果还是  codeA[123456]codeB


大头猫米 2024-03-25 21:27
#2

无意中被我测试出来了

提取后面的字符的正则式是

 (?<=codeA).+


及时这个.+要移动到后面去

大头猫米 2024-03-25 21:28
#3

然后一步到位的正则式是

 (?<=codeA).+(?=codeB)

臭冬瓜 回复 大头猫米 2024-03-25 23:24 :

你不是要数值吗,中间的.应该改成\d

CL 2024-03-25 21:32
#4

建议更深入一点了解相关内容后再做,不然很容易走弯路。


level1 2024-03-26 23:46
#6

(?<=codeA)\[\d+\](?=codeB)


大头猫米 回复 level1 18天2小时前 :

谢谢.我试试

林青雀 2024-03-27 09:37
#7

(?<=codeA)(\d+(\.\d+)?)(?=codeB)

这样可以实现,我自己就一直在用,可以匹配到数字或小数。


大头猫米 回复 林青雀 18天2小时前 :

谢谢

回复主贴