1 unstable release
| new 0.1.0 | Feb 7, 2026 |
|---|
#540 in Text processing
195KB
4.5K
SLoC
re-x 🔍⚡
AI-native regex CLI — Test, validate, explain. Built for coding agents.
re-x is a regex testing tool designed for AI coding agents. JSON output by default. Single binary. Zero dependencies.
AI agents generate regex patterns constantly — but they can't test them. re-x fixes that.
$ re-x test '(\d{3})-(\d{4})' 'Call 123-4567 now'
{
"matched": true,
"match_count": 1,
"matches": [
{
"text": "123-4567",
"start": 5,
"end": 13,
"captures": [
{"group": 1, "text": "123", "start": 5, "end": 8},
{"group": 2, "text": "4567", "start": 9, "end": 13}
]
}
]
}
Why re-x?
| Problem | Before re-x | With re-x |
|---|---|---|
| AI generates regex | Writes Python script to test → wastes tokens | re-x test 'pattern' 'input' → instant JSON |
| "Does this regex work in JS?" | AI guesses | re-x validate 'pattern' → portability report |
| Complex regex in legacy code | AI tries to read it | re-x explain 'pattern' → structured breakdown |
| ReDoS vulnerability check | No easy way | re-x benchmark 'pattern' → backtracking detection |
| regex101.com | Web only, no CLI | re-x = regex101 for your terminal |
Install
# Homebrew (macOS / Linux)
brew install re-x-ai/tap/re-x
# Cargo (Rust)
cargo install re-x
# Download binary from GitHub Releases
# https://github.com/re-x-ai/re-x/releases/latest
Commands
re-x test — Test a pattern
# Against a string
re-x test '\b\w+@\w+\.\w+\b' 'Email me at user@example.com'
# Against a file (streaming, handles large files)
re-x test 'ERROR|WARN' --file app.log --max-matches 20
# Via pipe
cat data.csv | re-x test '^\d{4}-\d{2}-\d{2},'
re-x replace — Preview replacements
re-x replace '(\w+)@(\w+)' '$1 [at] $2' 'user@example.com'
# → {"result": "user [at] example.com", "replacements_made": 1}
# Preview replacements on a file (never modifies the file)
re-x replace 'http://' 'https://' --file urls.txt
re-x validate — Check syntax & portability
re-x validate '(?<=\d{3})\w+'
# {
# "valid": true,
# "engine_required": "fancy-regex",
# "portability": {
# "rust_regex": false,
# "pcre2": true,
# "javascript": false,
# "python_re": true,
# "python_regex": true,
# "go_regexp": false,
# "java": true,
# "dotnet": true,
# "ruby": true
# }
# }
re-x explain — Break down a pattern
re-x explain '^(?:https?://)?(?:www\.)?([^/]+)'
# Returns structured JSON with each token explained
re-x from-examples — Infer pattern from strings
re-x from-examples '2024-01-15' '2025-12-31' '2023-06-01'
# → [{"pattern": "\\d{4}-\\d{2}-\\d{2}", "confidence": 0.95}, ...]
re-x apply — Apply replacements to a file
# Dry-run first (shows what would change)
re-x apply 'http://' 'https://' --file urls.txt --dry-run
# Apply with backup (creates urls.txt.bak)
re-x apply 'http://' 'https://' --file urls.txt
# Apply without backup
re-x apply 'http://' 'https://' --file urls.txt --no-backup
# Multiline replacements (cross-line matching)
re-x apply '(?ms)^import.*?;$' 'use crate::*;' --file src/main.rs -m
re-x benchmark — Performance & ReDoS detection
re-x benchmark '(a+)+$' --input 'aaaaaaaaaaab'
# → {"catastrophic_backtracking": true, "warning": "..."}
AI Integration
Use with Claude Code (MCP)
# Register as MCP server
claude mcp add re-x -- re-x --mcp
Or add to .mcp.json:
{
"mcpServers": {
"re-x": {
"type": "stdio",
"command": "re-x",
"args": ["--mcp"]
}
}
}
Use with Claude Code (bash — zero config)
Claude Code can call re-x directly via bash — just install it and it's available:
You: "Write a regex to extract emails from this log file and test it"
Claude Code: runs `re-x test '\b[\w.-]+@[\w.-]+\.\w+\b' --file app.log`
Skills
Copy skills/regex-testing/SKILL.md to your project's .claude/skills/ directory to teach Claude Code when and how to use re-x:
mkdir -p .claude/skills/regex-testing
cp skills/regex-testing/SKILL.md .claude/skills/regex-testing/
For Cursor, copy skills/cursorrules/.cursor/rules/regex-testing.mdc to your project's .cursor/rules/ directory.
Human-Friendly Mode
While re-x defaults to JSON (for AI), humans can use --format text:
re-x test '\d+' 'abc 123 def 456' --format text
Pattern: \d+
Engine: regex (linear time)
Match 1: "123" [4..7]
Match 2: "456" [12..15]
2 matches found in 8μs
Design Decisions
JSON-first: Every command outputs structured JSON by default. AI agents parse JSON; humans can use --format text.
Dual engine: Simple patterns use the regex crate (linear time guaranteed). Patterns with lookahead/backreferences automatically use fancy-regex. You never need to think about it.
Safe by default: re-x replace previews changes but never modifies files. re-x apply writes to files but creates a .bak backup by default and supports --dry-run.
Zero dependencies: Single static binary. No Python, no Node.js, no runtime. Just download and run.
Performance
Built in Rust with the world-class regex crate:
| Operation | Speed |
|---|---|
| Simple pattern, 1MB file | ~3ms |
| Complex pattern, 10MB file | ~35ms |
| Pattern compilation | ~5μs |
Contributing
Contributions welcome!
git clone https://github.com/re-x-ai/re-x
cd re-x
cargo test
cargo run -- test '\d+' 'hello 123'
Sponsor
re-x is free and open source (MIT). Sponsoring keeps it maintained:
- 🚀 New features and language support
- 🐛 Quick bug fixes
- 📖 Better docs and AI Skills
License
MIT
Dependencies
~3–5MB
~95K SLoC