Flex - это инструмент для анализа входного потока в токены.
Это не драйвер регулярного выражения общего назначения.Если ваша задача не имеет отношения к разделению входного потока на отдельные токены, вы, вероятно, используете неправильный инструмент.
Я думаю, что вы пытаетесь здесь сделать, это разделить входной поток на токены и затем классифицироватьжетоны.Для этого можно использовать Flex, но вы должны четко понимать, что такое токен.Вы также должны помнить, что весь поток ввода должен быть обработан;Вы не можете просто выполнить поиск по регулярному выражению во входном потоке для того, что вас интересует. Все - даже пробел - должен быть частью некоторого токена.
В этом случаеКажется правдоподобным, что ваши токены состоят из
Однако вы не говорите, что считаете нужным«Слово», чтобы быть.Можно предположить, что слово - это любая последовательность непробельных символов, но у вас может быть более ограниченное определение.(Возможно, вы имеете в виду только буквы и цифры. Или даже просто буквы. Или, возможно, некоторые знаки препинания должны быть разрешены).
Из «слов» вас интересуют, какие из содержат последовательности ppp
или VV
.Таким образом, вы получаете три вида токенов:
- все, что не является словом
- "слова", которые содержат
ppp
или VV
- любойдругие «слова».
Предполагая, что вы действительно имели в виду, что «слово» - это любая последовательность непробельных символов, эта категоризация может быть выполнена с помощью следующего простого набора шаблонов сгибания:
[[:space:]]+ ; /* Ignore whitespace */
[^[:space:]]*(ppp|VV)[^[:space:]]* { matches++; }
[^[:space:]]+ ; /* Ignore other words */
Обратите внимание, что вышесказанное полностью зависит от того, как вы определяете «слово», которое вы еще не сделали (по крайней мере, не в вашем вопросе).Таким образом, он может иметь лишь небольшое сходство с вашей реальной проблемой, но его легко адаптировать.
Чтобы получить полное описание синтаксиса регулярного выражения, прочитайте руководство flex .Синтаксис должен быть знаком, но это не то же самое, что любая библиотека регулярных выражений, и вы обнаружите, что большинство онлайн-инструментов регулярных выражений не понимают синтаксис Flex.