This is a simple C++ application which allows you to practice creating regular expression patterns. We have provided 10 prompts which cover a variety of regular expression pattern usages. With this program, you can modify the prompts we have provided and also create your own prompts to solve. This program will highlight which charaters match the regular expression pattern that you type in and will not allow continuing to the next problem until the current problem is solved correct.
Required libraries: C++11, Curses Library, Boost Library
After downloading/cloning this repository, perform the following commands:
$ make # builds the program
$ ./regex # runs the program
Input | Description |
---|---|
Arrow keys/mouse | Move between Regex pattern: and Replace with: |
Mouse | Toggles Extended regex and Global Tag checkboxes. |
Ctrl+C |
Exits the program. |
Onscreen | Description |
---|---|
TASK |
Tells you what you should try and accomplish for that level. This will change to indicate that the problem is solved correctly. |
HINT |
Provides a hint. |
Create a blank text file with a number, preferrably starting with one greater than the largest number problem. (For example, adding an 11th question would result in creating a file called "problem11")
Use the following format:
Flag | Description |
---|---|
--prompt |
This is where your prompt goes. |
--line |
Each line of these are the possible strings/complete lines/sentences/etc. to capture. |
--match |
Indicates a string matching problem (as opposed to a replace or capture problem). Each line indicates whether or not a regex should match that corresponding string/sentence. A blank line indicates not matching, anything else indicates matching. |
--capture |
Indicates a string capture problem (as opposed to a replace or matching problem). Each line corresponds to the capture groups that are captured by the regex. These lines indicate what should be captured by \0 or the entire regex. Following --n lines are what should be captured by the corresponding capture groups (backreferencing) i.e. \1 \2 |
--replace |
Indicates a replace problem (as opposed to a find problem). Each line indicates what the capture and replace regex should return. |
Refer to the provided prompts if you need assistance.
Create a "main menu" or pass the program parameters to indicate levels/difficulty
Create additional levels
Improve the gui to be more clear and helpful
In replace mode, if the global flag is not set, it will replace globally.