Регулярное выражение для проверки содержимого текста - PullRequest
0 голосов
/ 20 февраля 2019

Как проверить, находится ли переменная ниже текста в R?Условие if должно возвращать true, если переменная имеет тот же текст с любым номером.

"Warning: Map Join MAPJOIN[33][bigTable=?] in task 'Stage-3:MAPRED' is a cross product"

Ниже текстов может быть любое число.

[33] and Stage-3

Я знаю, что мне нужно использовать регулярное выражение,но я очень плохо знаком с регулярным выражением.

Ниже приведен пример кода.Независимо от числа внутри текста оно должно возвращать true.

 var == "Warning: Map Join MAPJOIN[][bigTable=?] in task 'Stage-:MAPRED' is a cross product"
 var2== "Warning: Map Join MAPJOIN[11][bigTable=?] in task 'Stage-13:MAPRED' is a cross product"
 var3== "Warning: Map Join MAPJOIN[100][bigTable=?] in task 'Stage-123:MAPRED' is a cross product"
 var4== "Warning: Map Join MAPJOIN[11][bigTable=?] in task 'Stage-13:MAPRED' is a cross product-Textadded"
            if (var== var2){return TRUE} #Should return true
            if (var== var3){return TRUE} #Should return true
            if (var== var4){return TRUE} #Should NOT return true

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019
var="Warning: Map Join MAPJOIN[10][bigTable=?] in task 'Stage-12:MAPRED' is a cross product"
var2="Warning: Map Join MAPJOIN[33][bigTable=?] in task 'Stage-3:MAPRED' is a cross product"
if (gsub("[0-9]","",var)==gsub("[0-9]","",var2) ){
  print(TRUE)
}
TRUE

Используйте gsub, чтобы изменить все числа на ноль, затем сравните.

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

Вы ищете что-то подобное?

grepl("\\[\\d+\\].*Stage-\\d+", string)
#[1] TRUE

Это выглядит для любого числа в квадратных скобках [], за которым следует Stage- и любое число.

data

string <- "Warning: Map Join MAPJOIN[33][bigTable=?] in task 'Stage-3:MAPRED' is a cross product"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...