Как найти несколько подчеркиваний в одной строке? - PullRequest
0 голосов
/ 24 января 2019

У меня есть строки с разным количеством знаков подчеркивания. Я пытаюсь выбрать строки, которые содержат два или более подчеркивания. Какие-либо предложения?

Strings <- c("aa_bb", "aa_bb_cc_dd", "jah_ghtfv_jal")

В настоящее время у меня есть:

Match1 <- Strings[grepl("[_].+[_]", Strings) == TRUE,] and
Match2 <- Strings[grepl("_.*_", Strings) == TRUE,]

Оба возвращают немного разные значения. Может кто-нибудь придумать лучший способ считать, чтобы вернуть строки, которые имеют два или более подчеркивания?

В этом случае я хотел бы вернуть "aa_bb_cc_dd," jah_ghtfv_jal ".

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Если строки могут принимать любую форму и подчеркивания могут появляться где угодно (включая, например, только два подчеркивания "__"), вы можете просто посчитать их, используя stringr::str_count:

library(stringr)
Strings[str_count(Strings, "_") > 1]
0 голосов
/ 24 января 2019

Ваше текущее использование grepl неверно, и вы должны использовать это:

Match1 <- Strings[grepl("[_].+[_]", Strings)]
Match2 <- Strings[grepl("_.*_", Strings)]

Оба они возвращают идентичные результаты в соответствии с тем, что вы ожидаете. Но я думаю, что вы на самом деле здесь:

Strings <- c("aa_bb", "aa_bb_cc_dd", "jah_ghtfv_jal")
Strings[grepl("_[^_]+_", Strings)]

[1] "aa_bb_cc_dd"   "jah_ghtfv_jal"

Это соответствует любой строке, которая имеет подчеркивание, за которым следует один или несколько не подчеркивающих символов, а затем второе подчеркивание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...