r - R-- 提取特定文本和随后的文本/数字
问题描述
我有一列包含文本字符串,我不仅想提取特定字符串,还想提取该指定字符串后面的字符串或数字。对此有什么好的解决方案?
在下面的示例中 - 我想创建一个列“extract”以及str_extract
“lot”和“unit”这两个词,并且还提取此文本后面的后续数字。
ID | 笔记 | 提炼 |
---|---|---|
1 | 地段 56,地层标题,56/SP77100, | 第 56 节 |
2 | 18/SP71866,商业,17/SP71866,批次 18 | 地段 18 |
3 | 单元 9;3R/PS732002 | 单元 9 |
4 | V1602 F63, Section 8 Block 68 Unit 3 | 单元 3 |
看过很多正则表达式代码,但对于如何从指定的目标文本字符串中提取后续值没有任何帮助。
到目前为止,从另一个 StackOverflow 问题中尝试了这个-
result <- table %>%
mutate(extract = str_extract(notes, "(?lot\\s)\\W\\s?\\d+\\")) %>%
mutate(lot = str_squish(lot))
解决方案
您可以使用
str_extract(notes, "(?i)\\b(?:lot|unit)\\W*\\d+")
请参阅正则表达式演示。
细节
(?i)
- 不区分大小写的标志\b
- 单词边界(?:lot|unit)
- 要么lot
或unit
\W*
- 任何零个或多个非单词字符\d+
- 一位或多位数字。
R测试:
library(dplyr)
library(stringr)
df <- data.frame(notes=c("LOT 56, STRATA TITLE, 56/SP77100,","18/SP71866, COMMERCIAL, 17/SP71866, lot 18","unit 9; 3R/PS732002", "V1602 F63, Section 8 Block 68 Unit 3"))
df %>%
+ mutate(extract = str_extract(notes, "(?i)\\b(?:lot|unit)\\W*\\d+"))
notes extract
1 LOT 56, STRATA TITLE, 56/SP77100, LOT 56
2 18/SP71866, COMMERCIAL, 17/SP71866, lot 18 lot 18
3 unit 9; 3R/PS732002 unit 9
4 V1602 F63, Section 8 Block 68 Unit 3 Unit 3
推荐阅读
- python - 气流 BashOperator 在 Python 脚本之间传递参数
- vba - 查找匹配的重复项并为每个项涂上不同的颜色
- c - 查找数组中随机数的频率
- android - Xamarin.Android 中的 java.lang.IllegalStateException onCreate 活动
- python-3.x - anaconda 和 VScode 的问题
- javascript - Javascript和chart.js,如何将欧元货币添加到y标签
- regex - 学习如何使用正则表达式来验证电子邮件地址
- unity3d - 无法使用 Ui 按钮移动相机?
- html - HTML中的假视口
- flutter - 颤动的 html 小部件中禁用了 Youtube 全屏图标