#r #regex #gsub
#r #регулярное выражение #gsub
Вопрос:
Для "for delete 3. space until end of sentence."
строки я пытаюсь получить for delete 3.
в результате с
clear_brand_name <- gsub("^\s[3]", "", brand_name)
Это не дает ожидаемого результата.
Комментарии:
1.
sub("\s*3\..*", "", brand_name)
? Илиsub("(\s*3\.).*", "\1", brand_name)
?2. Это не сработало в «ASUS C302CA-DHM4 Chromebook Flip с 12,5-дюймовым сенсорным экраном, конвертируемый Chromebook, Intel Core m3, 4 ГБ оперативной памяти, 64 ГБ флэш-памяти, цельнометаллический корпус, USB Type C, Corning Gorilla Glass, Chrome OS»
3. Вам нужно 1) regex101.com/r/Nb9zD9/1 или 2) regex101.com/r/Nb9zD9/2 ? Каков ожидаемый результат для
"ASUS C302CA-DHM4 Chromebook Flip 12.5-inch Touchscreen Convertible Chromebook, Intel Core m3, 4GB RAM, 64GB Flash Storage, All-Metal Body, USB Type C, Corning Gorilla Glass, Chrome OS"
?4. ожидаемый результат: ASUS C302CA-DHM4 Chromebook
5. Затем вы просто хотите извлечь первые три слова,
sub("^\s*(\S (?:\s \S ){2}).*", "\1", brand_name)
?
Ответ №1:
Вы можете использовать
clear_brand_name <- sub("^\s*(\S (?:\s \S ){2}).*", "\1", brand_name)
Смотрите демонстрацию регулярных выражений. sub
найдет и заменит первое вхождение, которое соответствует шаблону.
Детали шаблона
^
— начало строки\s*
— 0 пробелов(\S (?:\s \S ){2})
— Группа 1:\S
— 1 символы без пробелов(?:\s \S ){2}
— два повторения 1 пробелов, а затем 1 символов, не содержащих пробелов
.*
— остальную часть строки.
Полное совпадение (вся строка) заменяется значением из группы 1 из-за 1
.