A from-scratch regular expression engine with TUI
Project description
Regecks
A regex engine built from scratch using python, and a TUI using Textual!
Ever part of this including stuff like the lexer, parser, the ast, and the backtracking were written by hand :)
Installation
Requires uv
git clone https://github.com/kashsuks/regecks
cd regecks
uv sync
Running
uv run regecks
Keybindings
| Key | Action |
|---|---|
| Tab | Move between pattern and test string fields |
| Ctrl+R | Run match manually |
| Ctrl+C | Quit |
Matches get updated live
Supported Syntax
Literals
| Pattern | Match |
|---|---|
| a | The character a |
| abc | The string abc exactly |
Wildcard
| Pattern | Match |
|---|---|
| . | Any single character except newline |
Quantifiers
All quantifiers are greedy and therefore consume as much as possible.
| Pattern | Match |
|---|---|
| a* | Zero or more a |
| a+ | One or more a |
| a? | Zero or one a |
| a{3} | Exactly 3 a |
| a{2,} | 2 or more a |
| a{2,4} | Between 2 and 4 a (inclusive) |
Anchors
| Pattern | Match |
|---|---|
| ^abc | abc only at the start of the string |
| abc$ | abc only at the end of the string |
| \b | Word boundary (between \w and \W) |
| \B | Non-word boundary |
Character classes
| Pattern | Match |
|---|---|
| [abc] | Any one of a, b, or c |
| [a-z] | Any lowercase letter |
| [A-Z0-9] | Any uppercase letter or digit |
| [^abc] | Any character except a, b, c |
| [^0-9] | Any non-digit |
Escape sequences
| Pattern | Match |
|---|---|
| \d | Any digit [0-9] |
| \D | Any non-digit |
| \w | Any word character [a-zA-Z0-9_] |
| \W | Any non-word character |
| \s | Any whitespace (space, tab, newline, etc) |
| \S | Any non-whitespace |
| \n | Newline |
| \t | Tab |
| \n | Literal dot (escaping special chars) |
Alternation
| Pattern | Match |
|---|---|
| cat|dog | Either cat or dog |
| foo|bar|baz | Any of the three |
Groups
| Pattern | Match |
|---|---|
| (abc) | abc, captured as group 1 |
| (a)(b) | ab, with a as group 1 and b as group 2 |
| (?:abc) | abc, not captured |
| (?Pabc) | abc, captured as named group name |
Flags
| Pattern | Match |
|---|---|
| (?iabc) | Match abc case-insensitively and matches ABC, abc, etc. |
The flags wrap everything that follows it in a pattern
Lookahead and lookbehind
These are zero-width assertions meaning they check for a condition without consuming characters.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file regecks-0.1.1.tar.gz.
File metadata
- Download URL: regecks-0.1.1.tar.gz
- Upload date:
- Size: 19.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c88f25d55bfe30f0e47e67dfcd5a17241af8fe6f7c4eb36720a4e7891298ca82
|
|
| MD5 |
d5453009fc8ca22836ba05ec96d6a2c9
|
|
| BLAKE2b-256 |
307b82608f48f5f31400e80497efea6a5d0c1dec0f92ea7cc8b2bf0be1bb23b3
|
File details
Details for the file regecks-0.1.1-py3-none-any.whl.
File metadata
- Download URL: regecks-0.1.1-py3-none-any.whl
- Upload date:
- Size: 14.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da53f1f2d028e2d83189e7bd422459c17fef8e7eada4de639c40133ef601b160
|
|
| MD5 |
0cee93f46a54cd0d96020bab7a50976e
|
|
| BLAKE2b-256 |
2df1814ba9c63d87012f236b6d0f49975def3cf20a697488c257ade2ae89385d
|