2017-01-26 3 views
-4

У меня есть две строки:экстракт нескольких частей строки с R

data = "Product Number: #76 in c (See Top 10 products in this department)" 
data1 = "Product Number: #321,222 in Thin Base Pizzas (See Top 10 products in this department)" 

с использованием str_match() в R, то, что было бы регулярное выражение для следующих результатов?

str_match (данные, регулярное выражение) [1] [2] [3]
[1,] "# 76 в фруктовые соки" "76" "фруктовые соки"

str_match (data1, регулярное выражение) [1] [2] [3]
[1,] "# триста двадцать один тысяча двести двадцать два в тонких базовых пицц" "321,222" "тонкого основание пица"

+0

Контекст, пожалуйста, необходимо найти закономерность в строении строк, чтобы дать полезный ответ. – snoram

+0

Дополнительная информация –

+0

Число после # может содержать несколько цифр и кому в качестве разделителя тысяч ex: # 31,123. текст после «in» и before »(см.« Может варьироваться по длине, но не имеет специальных символов. Ex: «Тонкие базовые пиццы» Teh Text «Номер продукта: #» и текст »(см. Top 10 продуктов в этом отделе) «никогда не изменяется». – 555

ответ

0

Вы можете использовать эту функцию regex для извлечения необходимой информации:

#([0-9,]+) in ([A-z ]+) 

вы можете увидеть в действии здесь: https://regex101.com/r/IM0wHV/1

+2

Позаботьтесь о диапазоне 'Az', он включает в себя символы без буквы' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' – Toto

0

Учитывая Ваш первый комментарий, который я думаю, что это будет обобщать, чтобы дать вам номер продукта.

sub(" .*", "", sub(".*#", "", data)) 
"76" 

И это второй один даст вам все, что находится между in и (.

sub(" \\(.*", "", sub(".*[0-9]+ in ", "", data)) 
"Fruit Juices" 

Не идеальное решение, но это рабочий пример, который вы можете предпринять здесь.

Смежные вопросы