Click here to Skip to main content
15,435,848 members
Articles / Desktop Programming / MFC
Posted 3 Jan 2006


32 bookmarked

GRETA - How to use Regular Expressions in Visual C++ correctly

Rate me:
Please Sign up or sign in to vote.
4.18/5 (12 votes)
3 Jan 2006CPOL3 min read
Introduction to building GRETA in Visual C++.


GRETA gives you all the power of PERL 5 regular expressions in your C++ applications. This is the homepage of GRETA. Today, we will discuss neither regular expressions nor template classes in the GRETA library, because you can get familiar with them at the GRETA homepage. Here, I will explain how to add and build the GRETA library in Visual C++, step by step.


Download GRETA's source code from GRETA homepage. For example: GRETA 2.6.4 for VC6, you will get ''. Or, you can download it from this site. Please do not download the *.lib file for GRETA (such as greta.lib etc.). You may find GRETA in the *.lib file from Microsoft. But greta.lib may not satisfy your needs. It may generate link errors.


GRETA library has six program files:

  • regexpr2.h
  • regexpr2.cpp
  • syntax2.h
  • syntax2.cpp
  • restack.h
  • reimpl2.h

Create a new 'Win32 Static Library' project for GRETA in your workspace:

  • Step 1: Create a blank workspace. For example, 'Test':

    Image 1

  • Step 2: Create the main project that will use GRETA. For example, 'Console' type 'Main':

    Image 2

  • Step 3: Create the GRETA project. Select 'Win32 Static Library' and make it a dependent of the Main project. After this, press the OK button, let the 'Pre-Compiled header' and 'MFC Support' remain unchecked:

    Image 3

  • Step 4: Copy those six program files from the GRETA zip package into the GRETA project's directory and add them to the project:

    Image 4

  • Step 5: Copy one of the example codes into the main() function. Change #include "regexpr2.h" to #include "..\greta\regexpr2.h". These examples are in the HTML file of the GRETA zip package. Select 'Main' project as the active project, then compile and run the project:

    Image 5

This is the final result that you get:

Image 6

Now, we have successfully finished the project with GRETA. [Download example project].

If your project uses Unicode or your main project is DLL type, please go on with the following.

Unicode version

If your project (which uses GRETA) is of Unicode version, you must make the GRETA project to be of Unicode version. For example:

  • Step 1: Add a 'Unicode Debug' configuration for your GRETA project:

    Image 7

  • Step 2: In the project settings, add '_UNICODE' and 'UNICODE' macros into the C++ general preprocessor definitions of the corresponding 'Unicode Debug' configuration:

    Image 8

  • Step 3: Repeat step 1 and step 2 for the 'Main' project as well as for 'Release' configuration.

You will get 'Unicode Debug' and 'Unicode Release' configurations for both GRETA and your main project.

Runtime library

In many cases, when your main project is DLL type, you must make sure that GRETA uses the same runtime library as your main project, or you will get a link error.

  • Step 1: To find out which runtime library your main project uses:

    Image 9

  • Step 2: Select the same runtime library for GRETA project. Now, you can link successfully.

Q: Why do we need to download greta.lib and why the downloaded greta.lib generates link error?

A: This is because of "Unicode version" and "Runtime library". Because it is not known whether the downloaded greta.lib is of Unicode version, and it is also not known which runtime library the downloaded greta.lib uses, so it may generate link errors.

Regular expression tools


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Written By
Software Developer (Senior)
China China
Begin coding from basic, since 1994. Interested in coding and database and website constructing.
My website: - Regular Expression Laboratory
The easiest regex engine:

Comments and Discussions

QuestionThe GRETA source is circa early 2000s. New version 11 C++ generate compile errors of various kinds. Pin
ckskinner10-Aug-22 17:40
Memberckskinner10-Aug-22 17:40 
GeneralCompiled greta a static library but getting linker error when linking to multithreaded dll Pin
manishru12327-Apr-09 23:23
Membermanishru12327-Apr-09 23:23 
GeneralRe: Compiled greta a static library but getting linker error when linking to multithreaded dll Pin
sswater shi28-Apr-09 2:06
Membersswater shi28-Apr-09 2:06 
GeneralRe: Compiled greta a static library but getting linker error when linking to multithreaded dll Pin
bigstone199819-Aug-09 20:37
Memberbigstone199819-Aug-09 20:37 
Questionhelp Pin
sudarshan2520-Oct-08 4:14
Membersudarshan2520-Oct-08 4:14 
QuestionHelp Pin
sudarshan2515-Oct-08 0:47
Membersudarshan2515-Oct-08 0:47 
AnswerRe: Help Pin
sswater shi15-Oct-08 4:29
Membersswater shi15-Oct-08 4:29 
QuestionHow to split string like "Text one\$$$Text two $$======"? Thanks Pin
jfzsl25-Oct-07 22:46
Memberjfzsl25-Oct-07 22:46 
AnswerRe: How to split string like "Text one\$$$Text two $$======"? Thanks Pin
sswater shi26-Oct-07 15:04
Membersswater shi26-Oct-07 15:04 
In your situation, you should use 'Match' operation, not 'Split' operation.

Use this pattern:

Click this to example.[^]
GeneralRe: How to split string like "Text one\$$$Text two $$======"? Thanks Pin
jfzsl27-Oct-07 6:27
Memberjfzsl27-Oct-07 6:27 
GeneralBugs!!! [modified] Pin
jfzsl5-Nov-07 21:42
Memberjfzsl5-Nov-07 21:42 
AnswerRe: Bugs!!! Pin
jfzsl20-Dec-07 15:16
Memberjfzsl20-Dec-07 15:16 
QuestionMulti-threaded DLL (/MD) Pin
Lin Lin27-Sep-06 23:34
MemberLin Lin27-Sep-06 23:34 
AnswerRe: Multi-threaded DLL (/MD) Pin
sswater shi28-Sep-06 0:26
Membersswater shi28-Sep-06 0:26 
GeneralCannot compile sample project Pin
namyrettol18-Sep-06 0:02
Membernamyrettol18-Sep-06 0:02 
GeneralRe: Cannot compile sample project Pin
sswater shi18-Sep-06 4:38
Membersswater shi18-Sep-06 4:38 
GeneralRe: Cannot compile sample project Pin
miaoux20-Sep-06 6:12
Membermiaoux20-Sep-06 6:12 
GeneralRe: Cannot compile sample project Pin
psykokwak4-Mar-07 3:04
Memberpsykokwak4-Mar-07 3:04 
GeneralRe: Cannot compile sample project Pin
123qwertz19-Mar-07 0:17
Member123qwertz19-Mar-07 0:17 
GeneralRe: Cannot compile sample project Pin
Evan Lin27-Oct-08 21:52
MemberEvan Lin27-Oct-08 21:52 
GeneralHelp!!! Pin
Razr33323-Aug-06 2:53
MemberRazr33323-Aug-06 2:53 
GeneralRe: Help!!! Pin
sswater shi23-Aug-06 14:18
Membersswater shi23-Aug-06 14:18 
GeneralHELP Pin
jeffk8328-Mar-06 15:29
Memberjeffk8328-Mar-06 15:29 
AnswerRe: HELP Pin
sswater shi28-Mar-06 15:46
Membersswater shi28-Mar-06 15:46 
GeneralCAtlRegExp Pin
umeca7410-Jan-06 8:20
Memberumeca7410-Jan-06 8:20 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.