Применение метасимволов и кванторов Java

Применение метасимволов и кванторов JavaПодлинное преимущество, которое дает обработка регулярных выражений, невозможно ощуrить, не применяя метасимволы и кванторы. Рассмотрим сначала следующий пример, где квантор + применяется для сопоставления с лю­бой произвольной последовательностью символов W:

Ниже приведены результаты, выводимые данной программой. Как следует из результатов, шаблон «W+» в регулярном выражении совпадает с последовательно­стью символов W любой длины.

В приведенном ниже примере программы метасимвол используется для состав­ления шаблона, который должен сопоставляться с любой последовательностью, начинающейся с символа е и оканчивающейся символом d. Для этой цели в шабло­не указывается не только метасимвол точки, но и квантор +.

Приведенный ниже результат выполнения этой программы может показаться неожиданным:

При сопоставлении входной последовательности с шаблоном было обнаружено только одно совпадение. И это самая длинная последовательность, которая начи­нается с символа е и оканчивается символом d, хотя предполагалось обнаружить два совпадения: «extend» и «end«.

Более длинная последовательность была обна­ружена потому, что по умолчанию метод find() обнаруживает совпадение с шабло­ном самой длинной последовательности. Такое совпадение называется строгим.

Но можно задать и нестрогое совпадение, если ввести в шаблон квантор ? , как показано в приведенной ниже версии программы из предыдущего примера. В итоге получа­ется шаблон для сопоставления с самой короткой входной последовательностью.

Ниже приведены результаты, выводимые данной программой:

Как следует из результатов, шаблон «е.+?d» совпадает с более короткой вход­ной последовательностью, которая начинается с символа е и оканчивается симво­лом d. Таким образом, обнаруживаются два совпадения.