Ограничить общее количество определенных символов в PCRE до N

0

Есть ли способ написать такое регулярное выражение, которое будет соответствовать строке, в которой определенный символ встречается N раз, или между M и N раз? Символ может распространяться по всей строке. Это затрудняет использование регулярного выражения.

Мне нужно использовать библиотеку PCRE C/C++. На первый взгляд это не похоже на правильную работу для регулярного выражения, но тривиально делать со строковыми методами, но по разным причинам мне желательно найти решение для регулярного выражения.

Мое первое предположение заключается в том, что мне нужно использовать функцию выноски PCRE для вызова функции, которая будет вычислять количество событий символа C в захваченной последовательности и принимать или отклонять такое совпадение. Не уверен, что если можно использовать функцию выноски.

Теги:
pcre

1 ответ

1

Я думаю, что следующий пример соответствует вводу, содержащему от 3 до 5 x-es ^[^x]*(x[^x]*){3,5}[^x]*$.

ДОБАВЛЕНО:

После обсуждения лучше: ^[^x]*(x[^x]*){3,5}$

  • 0
    Выглядит хорошо, но разве не последний [^x]* перед $ избыточен, как уже содержится в (x[^x]*){3,5} ?
  • 0
    @ Jonny5 На самом деле. хорошая точка зрения.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню