Какое регулярное выражение соответствует слову «Уголь»?

#r #regex

#r #регулярное выражение

Вопрос:

Я использую команду grep в R, чтобы найти все вхождения слова Coal в столбце фрейма данных. Coal может встречаться в любом месте значения. Например, Coal Combustion это также допустимое значение. Что такое регулярное выражение для этого?

Я пробовал использовать:

 grep("[:Coal:]", NEI[,5])
 

но это не дает мне правильных ответов.

Любая помощь приветствуется.

Ответ №1:

Вы можете использовать это:

 regmatches(subject, gregexpr(".*Coal.*", subject, perl=TRUE));
 

Если вы хотите убедиться, что уголь не встроен в слово, просто добавьте границы:

 grepl("\bCoal\b", subject, perl=TRUE);
 

Комментарии:

1. Это соответствовало subject<-"Coalescent Tree" бы, и я не уверен, что это то, что задумано.

2. @MrFlick Ты прав. Дал ему второй вариант с границами. Спасибо, что указали на это, я не понял этого из вопроса. 🙂

3. В R это должно быть «\ b», чтобы правильно избежать косой черты.

Ответ №2:

Попробуйте

 grep("\bCoal\b", NEI[,5])
 

b Часть соответствует границам слов, поэтому «Уголь» не может касаться других букв.

Комментарии:

1. @Moon_Watcher традиционно мы принимаем ответы, которые решили наши проблемы, щелкнув зеленую галочку рядом с ответом. Это показывает, что на вопрос был дан удовлетворительный ответ и является частью хорошего гражданства сайта. Спасибо.

2. @Simon O’Hanlon я знаю, но это не позволило бы мне немедленно проверить ответ. Мне пришлось подождать некоторое время, прежде чем я это сделал. Спасибо!