使用R的str_extract提取指定文本(lot/unit)及后续对应数字的解决方案
解决方案
直接使用适配大小写、同时匹配两类关键词的正则即可实现需求,正确代码如下:
library(tidyverse) result <- table %>% mutate(extract = str_extract(notes, "(?i)(lot|unit)\\s*\\d+"))
正则规则说明
(?i):开启大小写不敏感匹配,适配LOT/lot/Unit/unit等不同写法(lot|unit):匹配两类目标关键词中的任意一个\\s*:匹配关键词和后续数字之间的任意数量空白字符,兼容多空格、无空格等特殊情况\\d+:匹配1位及以上的连续数字
扩展方案
如果单条文本存在同时包含lot和unit的场景:
- 仅需提取第一个匹配结果,保留现有
str_extract写法即可 - 需提取所有匹配结果,可将
str_extract替换为str_extract_all,返回结果为列表格式
内容的提问来源于stack exchange,提问作者Aamash Haroon
相关产品推荐
相关产品推荐

