Plain English to Regex - Your friendly regex helper
Project description
regex-buddy
Plain English to Regex - Your friendly regex helper.
Stop struggling with regex syntax. Just describe what you want to match in plain English.
Key Features:
- 24+ built-in patterns with explanations
- Debug why your regex doesn't match (the killer feature!)
- Plain English to regex conversion
- Quick reference cheatsheet with escape guide
- Interactive regex builder
- Auto-diagnose problems when testing fails
Installation
pip install regex-buddy
Quick Start
# Get a pattern by name
regex-buddy get email
# List all available patterns
regex-buddy list
# Test a pattern against text
regex-buddy test email -t "Contact us at hello@example.com"
# Find a pattern by description
regex-buddy find "match phone numbers"
# Interactive mode
regex-buddy interactive
Built-in Patterns
regex-buddy comes with 25+ pre-built patterns:
| Pattern | Description |
|---|---|
email |
Match email addresses |
phone |
Match US phone numbers |
url |
Match URLs (http/https) |
ipv4 |
Match IPv4 addresses |
date-mdy |
Match dates (MM/DD/YYYY) |
date-ymd |
Match dates (YYYY-MM-DD) |
time |
Match time (12 or 24 hour) |
credit-card |
Match credit card numbers |
ssn |
Match Social Security Numbers |
zip |
Match US ZIP codes |
hex-color |
Match hex color codes |
username |
Match usernames |
password-strong |
Match strong passwords |
slug |
Match URL slugs |
hashtag |
Match #hashtags |
mention |
Match @mentions |
uuid |
Match UUIDs |
html-tag |
Match HTML tags |
markdown-link |
Match Markdown links |
number |
Match numbers |
word |
Match whole words |
Usage Examples
Get a Pattern
$ regex-buddy get email
[email]
Pattern: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
Description: Match email addresses
Python: r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
JavaScript: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g
Get with Explanation
$ regex-buddy get email -v
[email]
Pattern: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
Description: Match email addresses
Breakdown:
[a-zA-Z0-9._%+-]+ - Username (letters, numbers, dots, underscores, etc.)
@ - The @ symbol
[a-zA-Z0-9.-]+ - Domain name
\. - A literal dot
[a-zA-Z]{2,} - Top-level domain (com, org, etc.)
Examples that match:
user@example.com
test.email+tag@domain.co.uk
Test a Pattern
$ regex-buddy test email -t "Send to john@example.com or jane@test.org"
Matches found: 2
Matches:
1. john@example.com
2. jane@test.org
Find by Description
$ regex-buddy find "match urls"
Found built-in pattern: url
Pattern: https?://(?:www\.)?...
Description: Match URLs (http and https)
Debug Why It Doesn't Match (The Killer Feature!)
$ regex-buddy debug "www.google.com" "visit www.google.com today"
Debugging pattern: www.google.com
Against text: visit www.google.com today
Pattern DOES match: ['www.google.com']
Suggestions:
- '.' in your pattern: Dot matches ANY character. Use \. for literal dot
- Consider using \b for word boundaries to avoid partial matches
The debug command catches common issues:
- Unescaped special characters (dots, asterisks, etc.)
- Case sensitivity problems
- Anchor issues (^ and $)
- Greedy vs lazy matching
- Missing word boundaries
- Shows partial matches to help you find where it breaks
Cheatsheet
# Quick reference
$ regex-buddy cheatsheet
# Escape guide (what characters need escaping)
$ regex-buddy cheatsheet -e
Explain Any Pattern
$ regex-buddy explain "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
Pattern: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
Breakdown:
[a-zA-Z0-9._%+-] - Any character in: a-zA-Z0-9._%+-
+ - One or more of previous
[a-zA-Z] - Any character in: a-zA-Z
{2,} - 2 or more times
Potential issues:
- Unescaped '.' - matches ANY character. Did you mean '\.'?
Interactive Mode
$ regex-buddy interactive
regex-buddy interactive mode
Commands: list, get <name>, test <pattern>, explain <pattern>, find <description>, quit
regex> get phone
regex> test email
Enter text to test (empty line to finish):
my email is test@example.com
please reply to hello@world.org
Matches found: 2
Python API
from regex_buddy import (
get_pattern, test_pattern, list_patterns,
debug_no_match, check_common_mistakes, RegexBuilder
)
# Get a pattern
email_pattern = get_pattern("email")
print(email_pattern["pattern"])
# [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
# Test a pattern
result = test_pattern(email_pattern["pattern"], "Contact: user@example.com")
print(result["matches"])
# ['user@example.com']
# Debug why something doesn't match
diag = debug_no_match(r"www.google.com", "visit www.google.com")
print(diag["suggestions"])
# ['Dot matches ANY character. Use \\. for literal dot', ...]
# Check for common mistakes before they cause problems
warnings = check_common_mistakes(r"(a+)+")
# [{'type': 'catastrophic_backtracking', 'message': '...'}]
# Build patterns interactively
builder = RegexBuilder()
pattern = (builder
.start()
.digits(exact=3)
.literal("-")
.digits(exact=4)
.end()
.build())
print(pattern) # ^\d{3}\-\d{4}$
# List all patterns
patterns = list_patterns()
for name, description in patterns.items():
print(f"{name}: {description}")
Support
If you find this project useful, consider supporting its development:
License
MIT License
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 regex_buddy-1.0.0.tar.gz.
File metadata
- Download URL: regex_buddy-1.0.0.tar.gz
- Upload date:
- Size: 22.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
770bb0a9abe00afc37798f10e8542c1af7f1cd9fac272ac57f0e935536717f20
|
|
| MD5 |
b476bb424009cee27b1050cfbe92dadc
|
|
| BLAKE2b-256 |
00ee3d5c9f16d636e4f3970a539dbf4dfa3fa36a5512b0f7affc936da965cbcd
|
File details
Details for the file regex_buddy-1.0.0-py3-none-any.whl.
File metadata
- Download URL: regex_buddy-1.0.0-py3-none-any.whl
- Upload date:
- Size: 23.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad267f6328ef406cc5b779dcbca49e86f5c3d31415e6ed78b059d11b98835f3e
|
|
| MD5 |
298a10ef5524f369b7ed791c472c93a6
|
|
| BLAKE2b-256 |
e4e571be64ee1fb953575ee4c43da1abd220d022869c28d695b658367cf327d5
|