C regex получает индекс соответствия

#c #regex

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

Вопрос:

Я пытаюсь использовать регулярные выражения, используя regcomp() и regexec() из regex.h, и мне было интересно, есть ли какой-либо способ получить индекс совпадения, если он найден?

Например, если мое регулярное выражение просто «m», и я ищу «home», я бы хотел 2.

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

1. Что вы видите заполненным в regmatch_t *pmatch переданном вами массиве regexec() ?

Ответ №1:

Взгляните на аргументы pmatch и nmatch для regexec() . Со страницы руководства:

regexec() используется для сопоставления строки, заканчивающейся нулем, с предварительно скомпилированным буфером шаблонов, preg. nmatch и pmatch используются для предоставления информации о местоположении любых совпадений. eflags могут быть побитовыми или одного или обоих REG_NOTBOL и REG_NOTEOL, которые вызывают изменения в поведении сопоставления, описанные ниже.

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

1. Спасибо, я действительно просмотрел справочную страницу, но пропустил этот бит.

2. Эх, я пытался, но я действительно не понимаю, как использовать nmatch и pmatch. Они кажутся одинаковыми независимо от того, получаю я совпадение или нет, и независимо от того, где оно находится. Кроме того, я действительно не знаю, что делать с чем-то типа regmatch_t или size_t.