regex_helper
Generate regex patterns from natural language descriptions or explain existing regex patterns to understand their matching behavior.
Instructions
Explain regex or generate regex from natural language.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: explain (explain pattern), generate (create from description) | |
| pattern | No | For explain: regex pattern to explain | |
| description | No | For generate: natural language description of what to match | |
| examples | No | For generate: example strings that should match (optional) | |
| flavor | No | Regex flavor (default: javascript) |
Implementation Reference
- src/tools/code-assistance.ts:866-928 (handler)Implementation of explainRegex tool handler in CodeAssistanceTools class.
async explainRegex( pattern: string, options?: { flags?: string; generateExamples?: boolean; } ): Promise<ExplainRegexResult> { const flags = options?.flags ?? ''; const includeExamples = options?.generateExamples ?? true; const prompt = `You are a regex expert. Explain this regular expression in plain English. Pattern: ${pattern} ${flags ? `Flags: ${flags}` : ''} ${includeExamples ? 'Include example matches and non-matches.' : ''} Provide your response as JSON: { "pattern": "${pattern}", "explanation": "Plain English explanation", "breakdown": [ {"part": "regex part", "meaning": "what it matches"} ], "examples": [ {"input": "example text", "matches": true, "matchedPart": "matched portion"} ] }`; try { const responseText = await this.llmWrapper.callToolLlm( 'regex_helper', [ { role: 'system', content: prompt }, { role: 'user', content: `Explain this regex: /${pattern}/${flags}` }, ], { type: 'explain_regex', pattern, flags } ); const parsed = this.parseJsonResponse(responseText, { pattern, explanation: responseText, breakdown: [], examples: [], }); return { success: true, pattern, explanation: parsed.explanation || '', breakdown: parsed.breakdown || [], examples: parsed.examples || [], }; } catch (error) { return { success: false, pattern, explanation: '', breakdown: [], examples: [], error: error instanceof Error ? error.message : 'Unknown error', }; } } - src/tools/code-assistance.ts:933-975 (handler)Implementation of generateRegex tool handler in CodeAssistanceTools class.
async generateRegex( description: string, options?: { flavor?: 'javascript' | 'python' | 'pcre'; examples?: string[]; } ): Promise<GenerateRegexResult> { const flavor = options?.flavor ?? 'javascript'; const prompt = `You are a regex expert. Generate a regular expression based on this description. Regex flavor: ${flavor} ${options?.examples ? `Examples that should match:\n${options.examples.join('\n')}` : ''} Provide your response as JSON: { "pattern": "the regex pattern (without delimiters)", "flags": "any flags like 'gi'", "explanation": "How the pattern works", "examples": [ {"input": "example", "shouldMatch": true} ], "alternativePatterns": ["simpler or alternative patterns"] }`; try { const responseText = await this.llmWrapper.callToolLlm( 'regex_helper', [ { role: 'system', content: prompt }, { role: 'user', content: `Generate a regex that matches: ${description}` }, ], { type: 'generate_regex', flavor } ); const parsed = this.parseJsonResponse(responseText, { pattern: '', explanation: responseText, examples: [], }); return { success: true,