Как получить полное соответствие регулярному выражению из RE2?

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

Что я хочу это:

Текст: «Образец текста»
Регулярное выражение: «p. * X»
Извлеките полное соответствие регулярному выражению из текста: «ple tex»

Я не могу найти какую-либо функцию в RE2 API, которая поддерживает это. PartialMatch извлекает только группы из регулярного выражения (помеченные круглыми скобками), но мои регулярные выражения исходят от пользователей, я не могу заставить их всегда заключать свои регулярные выражения в группу. Я также не хочу вручную оборачивать каждое регулярное выражение в группе, потому что это не похоже на элегантное решение, и оно не будет работать, если пользователь поместит модификатор в начале регулярного выражения. Похоже, что это очень базовая функциональность, поэтому я удивлен, что нет четкого способа сделать это.

Кто-нибудь знает решение этой проблемы?

2

Решение

Обертывание всего шаблона является рабочей альтернативой, так как встроенные модификаторы не обязательно должны находиться в самом начале шаблона, и когда вы добавляете пару внешних скобок, например, в ((?s)go.*there|take.*this), (?s) Модификатор DOTALL будет по-прежнему применяться к обоим . в шаблоне.

string text;
if (RE2::PartialMatch("Sample text", "(p.*x)", &text)) {
// Put more code here
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]