Извлечь определенную строку шаблона из текста на R - PullRequest
0 голосов
/ 10 мая 2019

У меня есть колонка с текстом, похожая на приведенную ниже:

str1 = "ABCID 123456789 is what I'm looking for, could you help me to check this Item's status?"

Я хочу использовать функцию gsub в R для извлечения "ABCID 123456789" оттуда. Число может меняться с разными числами, но ABCID является константой. Может кто-нибудь узнать решение с этим, пожалуйста? Большое спасибо!

Ответы [ 3 ]

1 голос
/ 10 мая 2019

Мы можем использовать str_extract для выбора фиксированного слова, за которым следует пробел и одно или несколько чисел (\\d+)

library(stringr)
str_extract(df1$col1, "ABCID \\d+")

Если есть несколько экземпляров, используйте str_extract_all

str_extract_all(df1$col1, "ABCID \\d+")

ПРИМЕЧАНИЕ: OP утверждает, что для извлечения "ABCID 123456789" оттуда

0 голосов
/ 10 мая 2019

Если число имеет постоянную длину (9), вы можете использовать положительный взгляд позади :

sub("(?<=ABCID \\d{9}).*", "", str1, perl = TRUE)
# [1] "ABCID 123456789"
0 голосов
/ 10 мая 2019

Сопоставьте начало строки (^) с начальными буквами (ABCID), пробел, цифры (\ d +) и все остальное (. *) И замените все это захваченной частью, то есть частью в скобках.Обратите внимание, что здесь мы хотим использовать sub, а не gsub, поскольку существует только одна подстановка.

sub("^(ABCID \\d+).*", "\\1", str1)
## [1] "ABCID 123456789"
...