Ваш текст содержит только две новые строки, вы можете легко проверить его, используя cat(text)
, и есть три строки:
c("Silk Road Forums", "", "*", "Welcome, Guest. Please login or register.", "[ ] [ ] [Forever] [Login]", "Login with username, password and session length", "[ ] [Search] ", "", " � Home", " � Search", " � Login", " � Register", "", "", " � Silk Road Forums »", " � Profile of Dread Pirate Roberts »", " � Summary", "", " � Profile Info", " □ Summary", " □ Show Stats", " □ Show Posts...", " � Messages",
" � Topics", " � Attachments", "", "[profile_sm]Summary", "", "Dread Pirate Roberts Administrator", "", "[index]", " □ SMF | SMF © 2013, Simple Machines"
)
Итак, как вы видите, после [profile_sm]Summary
нет новой строки. Заметьте, что для совпадения [
в шаблоне регулярных выражений вам необходимо его избежать. Есть пробел, "
и запятые. Эти символы можно сопоставить, используя шаблон [,"\s]+
. Переменная X
будет содержать Dread Pirate Roberts
, поэтому для извлечения Administrator
вы можете использовать
\[profile_sm]Summary[",\s]*Dread Pirate Roberts\s+\K[^"]+
См. Демонстрационную версию regex .
Подробности
\[profile_sm]Summary
- [profile_sm]Summary
string [",\s]*
- 0+ "
, ,
или пробельные символы Dread Pirate Roberts
- буквенная строка \s+
- 1+ пробелов \K
- оператор сброса совпадений, который отбрасывает сопоставленный текст в буфере памяти совпадений [^"]+
- 1+ символов кроме "
. Если вам нужно сопоставить только буквы, цифры или _
, вы можете использовать \w+
вместо этого шаблона (с \\
в строковом литерале).
R демо:
text <- "c(\"Silk Road Forums\", \"\", \"*\", \"Welcome, Guest. Please login or register.\", \"[ ] [ ] [Forever] [Login]\", \"Login with username, password and session length\", \"[ ] [Search] \", \"\", \" â\200¢ Home\", \" â\200¢ Search\", \" â\200¢ Login\", \" â\200¢ Register\", \"\", \"\", \" â\200¢ Silk Road Forums »\", \" â\200¢ Profile of Dread Pirate Roberts »\", \" â\200¢ Summary\", \"\", \" â\200¢ Profile Info\", \" â–¡ Summary\", \" â–¡ Show Stats\", \" â–¡ Show Posts...\", \" â\230† Messages\", \n\" â\230† Topics\", \" â\230† Attachments\", \"\", \"[profile_sm]Summary\", \"\", \"Dread Pirate Roberts Administrator\", \"\", \"[index]\", \" â–¡ SMF | SMF © 2013, Simple Machines\"\n)"
X <- "Dread Pirate Roberts"
regex <- paste0('\\[profile_sm]Summary[",\\s]*',X,'\\s+\\K[^"]+')
regmatches(text, regexpr(regex, text, perl=TRUE))
## => [1] "Administrator"