Сохранить значение совпадения регулярного выражения в переменной - PullRequest
2 голосов
/ 12 июля 2020

У меня есть строка, содержащая метку времени и несколько случайных символов. Например, str = "11:05:46 some random text here", и я просто хочу получить метку времени и сохранить ее в переменной с помощью регулярного выражения.

Регулярное выражение для формата метки времени -

\d{2}:\d{2}:\d{2}

, и я использую regexp в Matlab следующим образом:

timestamp = regexp(str,expression)

, где str - "11:05:46 some random text here", а выражение - '\d{2}:\d{2}:\d{2}', но оно возвращает индекс (1), а не само значение (11:05:46).

Есть ли в Matlab способ получить значение и сохранить его в переменной, если значение соответствует выражению регулярного выражения? ожидаемый результат: 11: 05: 46

Или есть способ, при котором я могу просто сопоставить все остальное, кроме метки времени? ожидаемый результат: здесь какой-то случайный текст

1 Ответ

1 голос
/ 12 июля 2020

Вам нужно передать 'match' в качестве третьего аргумента функции regexp:

timestamp = regexp(str,expression, 'match')

Вывод:

timestamp =
{
  [1,1] = 11:05:46
}

Аргумент 'match' делает вывод Matlab текст каждой подстроки, которая соответствует шаблону в выражении , см. документацию .

Используя regexprep, вы можете удалить метку времени в начале строка для возврата всего, что осталось:

>> regexprep(str,expression,'')
ans =  some random text here
...