Most people who ask AI for a regex get something that passes their one test case and then silently fails on the next real input. The model optimized for "make it pass" instead of "make it readable and correct for the actual pattern."
The regex you can maintain six months later is the one where every group and quantifier has a one-line comment and you have three test strings that prove the edge cases.
The prompt that produces maintainable regex
"Write a regex that extracts [exact fields] from strings that look like [real examples]. Return:
1. The regex in a single line suitable for code.
2. A commented, multi-line version with one sentence per group explaining what it captures and why.
3. Three test strings: one happy path, one edge case that almost matches, one that must not match.
4. The exact failure mode if the input format changes in [specific way you have seen before]."
That last line is the one most people skip. It is also the difference between a regex that survives and one that requires a 3 a.m. hotfix.
Worked example: log line with optional user id
Input lines look like:
2026-07-07 14:22:03 [INFO] user=alice123 action=export file=report_q2.csv
2026-07-07 14:22:18 [WARN] action=retry (no user)
Bad prompt: "regex to parse these logs"
Typical output: a 120-character monster with 9 groups and a lookbehind that works in one engine and not another.
Good prompt to the Regex Generator or Coding Assistant:
"Extract timestamp, level, optional user id, action, and optional filename. Timestamp is always first and in that format. Level is INFO/WARN/ERROR in brackets. user= may be absent. action= is always present. file= only on some lines."
Plus the test strings and the "what if filename has spaces or commas" question.
The model then produces a readable pattern with named groups or clear numbered groups plus the three tests.
Table: regex prompt quality
| Prompt | What you get | 6 months later |
|---|---|---|
| "write regex for this" | Works on the one example | Mystery groups, no tests, breaks on first new variant |
| + "explain each part" | Slightly better | You still have to write the tests yourself |
| + "give me tests + failure mode" | Usable | You can edit one group without fear |
One rule before you paste the regex into production
If you cannot explain in one sentence what group 3 captures, do not ship it. Re-prompt with "name the groups or use named capture and comment each one."
The Regex Generator tool forces the test cases and the explanation step. Use it. Then copy the commented version into your code as the source of truth.
Regex is a write-once, debug-forever language. The 30 seconds you spend making the model produce the comments and tests is the cheapest maintenance you will ever buy.