【问题标题】:Regex for extracting two numbers with a between and end pattern正则表达式用于提取两个数字之间和结束模式
【发布时间】:2026-01-29 12:05:02
【问题描述】:

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

  • 30A/305B:30和305都必须返回;
  • 30/305B: 30 和 305 都不会返回;
  • 30A/305: 30 和 305 都不会返回;

根据here,我尝试了下面的正则表达式但没有成功:

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

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

【问题讨论】:

    标签: r regex


    【解决方案1】:

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

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

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


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

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

    Regex demo

    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"
    

    【讨论】:

    • 当然,知道了!谢谢。
    最近更新 更多