Предоставляет ли Delphi VCL библиотеку регулярных выражений? - PullRequest
8 голосов
/ 11 сентября 2009

Есть ли в VCL библиотека для регулярных выражений?

Если нет, можете порекомендовать хорошую стороннюю библиотеку.

Ответы [ 7 ]

8 голосов
/ 23 февраля 2011

Начиная с Delphi XE, RTL содержит поддержку регулярных выражений:

http://docwiki.embarcadero.com/RADStudio/en/VCL_and_RTL_Changes_for_XE

RegularExpressions.TRegEx - основная запись, которую пользователь должен сопоставлять и заменять на обычныевыражения.Члены подразделения RegularExpressions составляют интерфейс, очень близкий к интерфейсу MSDN, ...

и

RegularExpressionsCore.TPerlRegEx реализует Perl-совместимые регулярные выражения (http://www.regular -expressions.info / pcre.html ).

5 голосов
/ 12 сентября 2009

Jedi Code Library (JCL) предоставляет регулярное выражение на основе Perl. Загрузите JCL с по этой ссылке .

После установки перейдите в папку установки / source / common и у вас есть JclPCRE.pas и pcre.pas

5 голосов
/ 11 сентября 2009

Delphi не предоставляет библиотеку регулярных выражений в VCL.

Существуют сторонние модули регулярных выражений.

DIRegExp

TRegExpr 2 (сайт закрыт 22.9.2009)

4 голосов
/ 11 сентября 2009

См. TPerlRegEx ( загрузка ), хотя это всего лишь оболочка для PCRE.

3 голосов
/ 11 сентября 2009

Нет ни одного "в коробке", как упоминали другие. Тем не менее, мы должны быть осторожны, когда говорим «можем ли мы иметь регулярное выражение в IDE / VCL», потому что два разных человека, просящих об этом, могут иметь две очень разные идеи относительно того, какое регулярное выражение они хотят чтобы увидеть поддерживается .

Так что, хотя было бы неплохо иметь встроенную поддержку регулярных выражений, вы должны знать, что это приведет к проблемам, когда люди начнут обмениваться рецептами регулярных выражений (с другими людьми, не использующими Delphi) и не могут понять почему действительное регулярное выражение одного человека не является допустимым регулярным выражением в Delphi.

Так что тогда это будет "regexp не работает в Delphi" или "почему у нас не может быть поддержки XYZ regexp и поддержки ABC-фреймов?"

Так что в данный момент я бы сказал, что выбор в отношении того, какое регулярное выражение подходит вам, является в некотором смысле преимуществом, если предположить, что вы можете найти компонент / библиотеку для Delphi, которая поддерживает этот вариант. :)

На сайте Обычные-Экспрессии.info также есть страница, посвященная поддержке Delphi регулярных выражений .

1 голос
/ 11 сентября 2009

RegEx - это еще одна вещь, которой у вас нет в Delphi. Возможно, вы попробуете PCRE-компоненты для Delphi (сам не тестировал).

Я использовал TRegExp (упомянутый sdu ) несколько лет назад, но теперь ссылка кажется мертвой. Любопытно ...

0 голосов
/ 13 сентября 2009

Если вы собираетесь использовать Jedi Code Library (JCL), вам все равно нужно будет установить библиотеку PCRE.

...