разделить взглядом - PullRequest
       25

разделить взглядом

1 голос
/ 03 ноября 2019

Я хочу разбить строку на отдельные символы, кроме тех, которые окружены < и >. Следовательно, <a>bc<d>e станет <a> b c <d> e. Я попытался (?<!<)(?!>), который, кажется, работает в тестере регулярных выражений, но не в следующем коде в R. Что я сделал не так?

X = '<a>bc<d>e'
Y = '(?<!<)(?!>)'
unlist(strsplit(X,Y,perl=TRUE))
[1] "<" "a" ">" "b" "c" "<" "d" ">" "e"

1 Ответ

1 голос
/ 03 ноября 2019
(<[^>]+>|\S)

Кажется, работает. Он пытается сначала сопоставить треугольные скобки со всеми заключенными в них символами, а если нет, сопоставить один символ.

Пример для Regex101

regmatches(X, gregexpr("<[^>]+>|\\S",X))[[1]]
#> [1] "<a>" "b"   "c"   "<d>" "e"  
...