首页 > 解决方案 > 正则表达式用于提取两个数字之间和结束模式

问题描述

我需要在某些条件下提取两个数字:累积起来,第一个数字后面必须跟 a /A,并且第二个数字后面必须跟 a B。例如:

按照这里,我尝试了下面的正则表达式但没有成功:

(\d+(?=A\/))(\d+(?=B))

我该如何完成?我正在使用 R ,带有选项perl = TRUE

标签: rregex

解决方案


该模式(\d+(?=A\/))(\d+(?=B))匹配 1 个或多个数字,并A/直接在左侧断言(不匹配)。

第一个断言将是正确的,但在此断言之后有第二部分以再次匹配 1 个或多个数字开始。

那是行不通的,因为前面的断言只是断言存在A/


您不需要任何环视或 perl = TRUE,您可以使用 2 个捕获组来代替:

(\d+)A/(\d+)B

正则表达式演示

str <- "30A/305B: both 30 and 305 must be returned;"
str_match(str, "(\\d+)A/(\\d+)B")

输出

     [,1]       [,2] [,3] 
[1,] "30A/305B" "30" "305"

推荐阅读