(Это R-программирование)

Вы можете обратиться к образцу вопроса:

dates <- c("12/15/10", "12-2012", "12.2014", "1995")
grep(pattern = "^[0-9]+.+[0-9]$", x = dates) 

Заранее спасибо за вашу помощь!!

-4
Coc_BA 22 Апр 2021 в 15:04
Пожалуйста, отредактируйте свой вопрос и уточните, что вы используете. Это R-код? Как мы должны угадать?
 – 
terdon
21 Апр 2021 в 14:22
2
 – 
Mark Plotnick
21 Апр 2021 в 14:29
Да, я знаю, что это похоже на R. Но, насколько я знаю, ОП пытается запустить это в оболочке. Или используя определенный вариант регулярного выражения в R. Или используя какой-либо другой язык с похожим синтаксисом. В зависимости от контекста [0-9]+ может означать «одну или несколько цифр» или может означать «одну цифру, затем знак плюс».
 – 
terdon
21 Апр 2021 в 16:13
Я поставил несколько тегов и думал, что они будут относиться к R. Извините, в следующий раз уточню!
 – 
Coc_BA
22 Апр 2021 в 09:42

1 ответ

Лучший ответ

код в вопросе не имеет смысла, так как я не знаю, на каком языке он написан.

Регулярное выражение ^[0-9]+.+[0-9]$ — это расширенное регулярное выражение POSIX, которое соответствует одной или нескольким цифрам в начале строки, за которыми следуют один или несколько других символов (возможно, включая цифры) и последней цифре в конце строки. .

Компоненты выражения:

  • ^, это привязывает выражение к началу строки.
  • [0-9]+ соответствует хотя бы одному символу из набора 0-9, то есть цифрам.
  • .+ соответствует хотя бы одному символу любого типа.
  • [0-9] соответствует одной цифре.
  • $, это привязывает выражение к концу строки.

Пример самой короткой строки, которой соответствует это выражение:

1a1

Все примеры дат, которые я вижу в коде вопроса, дополнительно соответствуют выражению. Ниже показано, какая часть выражения соответствует какой части строки (используя sed):

$ printf '%s\n' "12/15/10" "12-2012" "12.2014" "1995" | sed -E 's/^([0-9]+)(.+)([0-9])$/(\1)(\2)(\3)/'
(12)(/15/1)(0)
(12)(-201)(2)
(12)(.201)(4)
(19)(9)(5)
2
Kusalananda 21 Апр 2021 в 14:30
Также первый «+» не обязателен.
 – 
berndbausch
21 Апр 2021 в 14:56
Чтобы соответствовать, нет. Но это имеет значение, если вас волнует, какая часть выражения соответствует какой части строки запроса.
 – 
Kusalananda
21 Апр 2021 в 14:58
Ооо, так цифра тоже может считаться символом? Я не был уверен в этом. (Супер спасибо за ответ!)
 – 
Coc_BA
22 Апр 2021 в 15:02
Да, цифра это символ. На самом деле все символы, включая пробелы, табуляции, знаки препинания и даже управляющие символы, являются символами и соответствуют точке. Хорошо! Если это решит вашу проблему, рассмотрите возможность принятия ответа. Принятие ответа помечает проблему как решенную.
 – 
Kusalananda
22 Апр 2021 в 16:52
Вы объясняете очень ясно и лаконично! Большое спасибо!
 – 
Coc_BA
24 Апр 2021 в 16:26