Мне нужна помощь, чтобы выяснить, почему мое регулярное выражение не совпадает с тем, что я ищу - PullRequest
1 голос
/ 07 октября 2019

Я работаю над сценарием R, чтобы проверить, правильно ли создан data.frame и содержит ли правильную информацию в нужном месте. Мне нужно убедиться, что строка содержит правильную информацию, поэтому я хочу использовать регулярное выражение для сравнения с каждым случаем указанной строки.

Я подумал, может быть, это не сработало, потому что я сравнил regex сзначение вызывается непосредственно из таблицы, но оно не работает.

Я использовал regex101.com, чтобы убедиться, что мое регулярное выражение было правильным, и оно совпадало, когда тестовая строка помещалась между кавычками.

Затем я добавил as.character() к значению, но оно оказалось ЛОЖНЫМ.

Подводя итог, регулярное выражение работает на regex101.com, но никогда не работало на моем сценарии R

test = c("b40", "b40")
".[ab][0-8]{2}." == test[1]
FALSE

Я ожидаю, что результат будет TRUE, но это всегда FALSE

1 Ответ

1 голос
/ 07 октября 2019

== для фиксированного полного совпадения строки и не используется для совпадения подстроки. Для этого мы можем использовать grep

grepl("^[ab][0-8]{2}", test[1])
#[1] TRUE

Здесь мы сопоставляем либо «a», либо «b» в начале (^) строки, за которой следуют две цифры в диапазоне от 0 до 8(если это должно быть в конце - используйте $)

...