извлечь цифры с положительным и отрицательным знаком - PullRequest
2 голосов
/ 28 марта 2019

У меня проблемы с извлечением цифр с +/- знаками перед ним.

мой пример строки выглядит так

x <- c("alexander c/d=(+5/-1)","maximus a/b=(-4/1)", "thor e/d=(+3/-2)")

Я пытаюсь извлечь цифры до и после косой черты / с их знаками.

Итак, я попытался

before_slash=sub(".*=\\((-?\\d+).*","\\1", x, perl = TRUE)

что дает

"alexander c/d=(+5/-1)" "-4"                    "thor e/d=(+3/-2)"

и

    after_slash=sub("^.*/(-?\\d+)","\\1", x, perl = TRUE)
> after_slash
[1] "-1)" "1)"  "-2)"

OTH, ожидаемый результат

before_slash

+5 -4 +3 

after_slash

-1 1 -2

Как я могу исправить проблему?

1 Ответ

2 голосов
/ 28 марта 2019

До слеша :

regmatches(x, regexpr("[-+]?\\d+(?=/)", x, perl=TRUE))
str_extract(x, "[-+]?\\d+(?=/)")

Детали

  • [-+]? - необязательно - или +
  • \d+ - 1 или более цифр
  • (?=/) - справа от текущего местоположения должна быть косая черта

После косой черты :

regmatches(x, regexpr("/\\K[-+]?\\d+", x, perl=TRUE))
str_extract(x, "(?<=/)[-+]?\\d+")

См. Демонстрационную версию R .

Детали

  • / - косая черта
  • \K - оператор сброса совпадений, отбрасывающий весь найденный текст
  • [-+]? - опционально - или +
  • \d+ - 1 или более цифр
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...