Извлечение шаблона с помощью regexpr () и regmatches () - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь разделить строку на три части: имя и время (дата, время) и общие тексты.Изначально это выглядело так:

data = 
c("JENNIFER [Day 1, 9:00 A.M.]: Generic text, it doesn't matter what is going on here. There are more than 2 lines." 

"SAM [Day 2, 10:15 A.M.]: This doesn't matter. It has a lot of lines." 
"DAN'S [Day 4, 12:00 P.M.]: It doesn't really matter what's going on in this part.")

Мне удалось извлечь первую часть данных, ИМЯ [ВРЕМЯ]:, но мне трудно было разделить ИМЯ и ВРЕМЯ.

match = regexpr("^[A-Z].*:", data)
regmatches(data, match)

Это дает мне:

JENNIFER [Day 1, 9:00 A.M.]:
SAM [Day 2, 10:15 A.M.]:
DAN'S [Day 4, 12:00 P.M.]:

Я вижу, что все имена написаны заглавными буквами, поэтому я бы сказал "^[A-Z]", но это также поднимет все остальные предложения.начиная с заглавной буквы.

Я собираюсь создать фрейм данных:

   Name           Date             Content
JENNIFER     Day 1 9:00A.M    "combined text" 

1 Ответ

2 голосов
/ 08 апреля 2019

Исправляя data, чтобы сделать его правильным R-кодом, как показано в примечании в конце, мы можем использовать strcapture от базы R следующим образом:

strcapture("^(.*) \\[(.*)\\]: (.*)", data,
  list(Name = character(0), Date = character(0), Text = character(0)))

, давая:

      Name              Date                                                  Text
1 JENNIFER  Day 1, 9:00 A.M. Blablablablablablbalbllalbalbalbl. Balalalbablablabl.
2      SAM Day 2, 10:15 A.M.  Balblablablabalbalbalblabalblablabl. Balaldfkemfeke.
3    DAN'S Day 4, 12:00 P.M.                                        DFnerke"dfsdf"

Примечание

data <-
c('JENNIFER [Day 1, 9:00 A.M.]: Blablablablablablbalbllalbalbalbl. Balalalbablablabl.',
'SAM [Day 2, 10:15 A.M.]: Balblablablabalbalbalblabalblablabl. Balaldfkemfeke.',
'DAN\'S [Day 4, 12:00 P.M.]: DFnerke"dfsdf"')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...