Как убрать "p.485" внутри скобок с помощью R? - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть: `

String="(anthony,2019, p.485)"

Требуемый вывод:

String="(anthony,2019)"

Я хочу удалить только стр.485.

Я использую регулярное выражение:`

gsub("\\( \\,p\\.[0-9]\\)","",String) 

но это не работает.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Мы также можем попробовать это немного неэффективное регулярное выражение:

String="(anthony,2019, p.485)"
gsub(",\\s\\w.\\d{1,}","",String,perl=TRUE)
#[1] "(anthony,2019)"
0 голосов
/ 28 февраля 2019

Похоже, что это может быть немного хрупким, поскольку это зависит от того, что после запятых нет пробелов, кроме последней:

gsub("[,] [^,)]+","", String)
[1] "(anthony,2019)"

Эта хрупкость также влияет на ответ Акруна.Более надежным решением было бы сопоставить последнюю запятую, но оставить в конце.Это решение будет искать эту последнюю запятую и обрезать все до, но не включая закрывающую скобку:

gsub("(.+)([,] [^,]+)([)])","\\1\\3", String)  # 3 capture classes

[1] "(anthony,2019)"                           # return only first and third
0 голосов
/ 28 февраля 2019

Мы можем использовать sub для сопоставления ,, за которым следует пробел, 'p' и одна или несколько цифр (\\d+), вместо пробела ("") в замене

sub(", p\\.\\d+", "", String)
#[1] "(anthony,2019)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...