Вы можете использовать
x <- "New:\r\nRemote_UI: Apple CarPlay application cannot be started (P3_DA18018395_012) (91735)\r\nMedia: After an iPhone is authorised as BTA device for the first time, Entertainment volume is abruptly set to zero when the user picks a song from \"Current tracklist\" (DA18018395_015)\r\n\r\nKnown:\r\nHWR in navigation entry is not read out (89412)"
New <- regmatches(x, gregexpr("(?:\\G(?!\\A)\\R+|New:\\R+)\\K.+(?!\\R+\\w+:\\R)", x, perl=TRUE))
Known <- regmatches(x, gregexpr("(?:\\G(?!\\A)\\R+|Known:\\R+)\\K.+(?!\\R+\\w+:\\R)", x, perl=TRUE))
См. Демоверсию R онлайн .
Выход:
[[1]]
[1] "Remote_UI: Apple CarPlay application cannot be started (P3_DA18018395_012) (91735)\r"
[2] "Media: After an iPhone is authorised as BTA device for the first time, Entertainment volume is abruptly set to zero when the user picks a song from \"Current tracklist\" (DA18018395_015"
[[1]]
[1] "HWR in navigation entry is not read out (89412)"
Используемое регулярное выражение:
(?:\G(?!\A)\R+|New:\R+)\K.+(?!\R+\w+:\R)
См. Демоверсию regex онлайн . Второе регулярное выражение отличается от этого только буквальным словом Known
.
Детали
(?:\G(?!\A)\R+|New:\R+)
- конец предыдущего матча и 1+ разрывов строк (\G(?!\A)\R+
) или (|
) New:
, а затем 1 или более разрывов строк (\R+
)
\K
- оператор сброса совпадений, отбрасывающий весь найденный текст
.+
- 1+ символов, кроме символов разрыва строки, как можно больше
(?!\R+\w+:\R)
- отрицательный прогноз, который не соответствует совпадению, если непосредственно справа от текущего местоположения имеются:
\R+
- 1+ разрывов строк,
\w+
- 1+ слово символов
:
- двоеточие
\R
- разрыв строки.