- Add regex parser, translator, and test generator - Add CLI with explain, test, interactive commands - Add multi-flavor support (PCRE, JavaScript, Python) - Add Gitea Actions CI workflow - Add comprehensive README documentation
172 lines
3.2 KiB
Markdown
172 lines
3.2 KiB
Markdown
# Regex Humanizer CLI
|
|
|
|
A CLI tool that converts complex regex patterns to human-readable English descriptions and generates comprehensive test cases.
|
|
|
|
## Features
|
|
|
|
- **Regex to English Translation**: Convert any regex pattern to plain English
|
|
- **Test Case Generation**: Auto-generate matching and non-matching test inputs
|
|
- **Multi-Flavor Support**: Supports PCRE, JavaScript, and Python regex flavors
|
|
- **Interactive Mode**: REPL-style interface for exploring regex patterns
|
|
- **Pattern Validation**: Validate regex patterns for different flavors
|
|
- **Flavor Conversion**: Convert patterns between different regex flavors
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
pip install regex-humanizer-cli
|
|
```
|
|
|
|
Or from source:
|
|
|
|
```bash
|
|
pip install -e .
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
### Explain a regex pattern
|
|
|
|
```bash
|
|
regex-humanizer explain "^\d{3}-\d{4}$"
|
|
```
|
|
|
|
Output:
|
|
```
|
|
Pattern: ^\d{3}-\d{4}$
|
|
Flavor: pcre
|
|
|
|
English Explanation:
|
|
--------------------------------------------------
|
|
at the start of line or stringany digit (0-9)any digit (0-9)any digit (0-9)hyphenany digit (0-9)any digit (0-9)any digit (0-9)any digit (0-9)at the end of line or string
|
|
```
|
|
|
|
### Generate test cases
|
|
|
|
```bash
|
|
regex-humanizer test "^[a-z]+$"
|
|
```
|
|
|
|
Output:
|
|
```
|
|
Pattern: ^[a-z]+$
|
|
Flavor: pcre
|
|
|
|
Matching strings (should match the pattern):
|
|
--------------------------------------------------
|
|
1. abc
|
|
2. hello
|
|
3. world
|
|
|
|
Non-matching strings (should NOT match the pattern):
|
|
--------------------------------------------------
|
|
1. 123
|
|
2. Hello
|
|
3. test123
|
|
```
|
|
|
|
### Interactive mode
|
|
|
|
```bash
|
|
regex-humanizer interactive
|
|
```
|
|
|
|
## Commands
|
|
|
|
### explain
|
|
|
|
Explain a regex pattern in human-readable English:
|
|
|
|
```bash
|
|
regex-humanizer explain "PATTERN" [OPTIONS]
|
|
```
|
|
|
|
Options:
|
|
- `--output, -o`: Output format (text/json, default: text)
|
|
- `--verbose, -v`: Show detailed breakdown
|
|
- `--flavor, -f`: Regex flavor (pcre/javascript/python)
|
|
|
|
### test
|
|
|
|
Generate test cases for a regex pattern:
|
|
|
|
```bash
|
|
regex-humanizer test "PATTERN" [OPTIONS]
|
|
```
|
|
|
|
Options:
|
|
- `--output, -o`: Output format (text/json, default: text)
|
|
- `--count, -n`: Number of test cases (default: 5)
|
|
|
|
### interactive
|
|
|
|
Start an interactive REPL for exploring regex patterns:
|
|
|
|
```bash
|
|
regex-humanizer interactive [OPTIONS]
|
|
```
|
|
|
|
Options:
|
|
- `--flavor, -f`: Default regex flavor
|
|
|
|
### flavors
|
|
|
|
List available regex flavors:
|
|
|
|
```bash
|
|
regex-humanizer flavors
|
|
```
|
|
|
|
### validate
|
|
|
|
Validate a regex pattern:
|
|
|
|
```bash
|
|
regex-humanizer validate "PATTERN" [OPTIONS]
|
|
```
|
|
|
|
Options:
|
|
- `--flavor, -f`: Specific flavor to validate against
|
|
|
|
### convert
|
|
|
|
Convert a regex pattern between flavors:
|
|
|
|
```bash
|
|
regex-humanizer convert "PATTERN" --from-flavor pcre --to-flavor javascript
|
|
```
|
|
|
|
## Flavor Support
|
|
|
|
| Feature | PCRE | JavaScript | Python |
|
|
|---------|------|------------|--------|
|
|
| Lookahead | ✅ | ✅ | ✅ |
|
|
| Lookbehind | ✅ | ⚠️ Limited | ✅ |
|
|
| Named Groups | ✅ | ✅ | ✅ |
|
|
| Possessive Quantifiers | ✅ | ❌ | ❌ |
|
|
| Atomic Groups | ✅ | ❌ | ❌ |
|
|
|
|
## Configuration
|
|
|
|
No configuration file required. All options can be passed via command line.
|
|
|
|
## Development
|
|
|
|
```bash
|
|
# Install development dependencies
|
|
pip install -e ".[dev]"
|
|
|
|
# Run tests
|
|
pytest tests/ -v
|
|
|
|
# Run linting
|
|
ruff check regex_humanizer/
|
|
|
|
# Run type checking
|
|
mypy regex_humanizer/ --ignore-missing-imports
|
|
```
|
|
|
|
## License
|
|
|
|
MIT License
|