2015-05-08 2 views
1

Я пытаюсь использовать регулярное выражение, чтобы извлечь часть строки до первого появления «/». В следующем примере исходная строка «Atomic группировка/притяжательные классификаторы/условна и рекурсивные структуры», и я хочу, чтобы получить «Atomic группировку»Lookahead в регулярном выражении

library(stringr) 
var.descr <- "Atomic grouping/possessive qualifiers/conditional and recursive patterns" 

Я попытался следующие, но это не соответствует строке до last "/ "вхождение (она возвращает„Atomic группировка/притяжательные классификаторы“)

str_extract(var.descr, perl("^.+(?=\\s/)")) 

Любая помощь будет с благодарностью оценили.

ответ

1

Вы можете использовать опережение регулярное выражение, как это:

str_extract(var.descr, perl("^.+?(?=/|$)")) 

(?=/|$) удостоверится либо / следует совпавшему текст или он совпадает до конца ввода.

RegEx Demo

+0

Спасибо. Не могли бы вы внести изменения, чтобы получить целую строку, когда в ней нет «/»? – Brani

+0

Спасибо, но я не хочу исключать «/», только «/». Например, если в строке есть «и/или» (до первого «/»), я не хочу, чтобы это было исключено. – Brani

+0

ok получил его. Проверьте мой обновленный ответ. – anubhava

1

Вы можете использовать "ленивый" + с ? после него

str_extract(var.descr, perl("^[^/]+")) 
+0

Спасибо. Не могли бы вы внести изменения, чтобы получить целую строку, когда в ней нет «/»? – Brani

+0

Я отредактировал с лучшим решением! – dax90

+0

Спасибо, но я не хочу исключать «/», только «/». Например, если в строке есть «и/или» (до первого «/»), я не хочу, чтобы это было исключено – Brani