Repository files navigation

A visualizer, debugger, and editor for C#-style regex.

regexdev focuses on making the internal structure and matching process of regex visible.
It parses regular expressions into an AST, visualizes them, and allows step-by-step debugging of the matching process.


🎬 Demonstration

All functions

Demonstration3

Parsing

Parse1

Debugging

Debug1

Editing

Edit

Multi-Display

MultiDisplay1

Breakpoints

Breakpoints


🚀 Features

  • 🔍 Regex AST visualizer
  • 🐞 Step-by-step regex debugger
  • ✏️ Interactive regex editor
  • 🧩 Breakpoints in the matching process
  • 🖥️ Multi-panel / multi-view display
  • 🎞️ Matching process playback

✅ Verification & Correctness

How does regexdev ensure the matching process is correct?

The matching results are continuously verified against the official C# regex engine:

  1. Compare Index and Length of every capture in every group
  2. Compare the total number of Matches
  3. If any difference is detected, a warning will be shown immediately

This makes regexdev suitable not only for visualization, but also for learning, debugging, and validating complex regex behavior.


🏷️ Tags / Capabilities

  • Regex Visualizer
  • Regex Debugger
  • Regex Editor
  • Regex Breakpoint System
  • Multi-View Regex Inspection

🧠 About the Code

⚠️Important note

This repository currently contains only the regex parser.

The full regexdev tool also includes a matcher, debugger runtime, and UI layers, but those parts are not open-sourced yet due to ongoing refactoring and cleanup.

Why only the parser?

This project originally started as an experimental tool, and the early matching implementation was tightly coupled and difficult to maintain.
Recently, I redesigned and rewrote the regex parser from scratch with a much cleaner architecture:

  • Explicit AST-based design
  • Clear separation of parsing stages
  • Easier to inspect, extend, and visualize

As a result, the parser became the most stable and reusable part of the project, and is published independently.

Especially:

I wrote a C# regex to replace the lexer and handle most grammar checks.

I didn’t want to write a lexical analyzer. 🚫

Extension point

If you want to experiment with your own parsing logic or build additional tooling on top of it, the main entry point is:

newRegexParse().Parse(...)

This allows you to focus on analysis, visualization, or matching logic,
without having to implement a regex lexer from scratch.


💻 Console Demo

A minimal console application is included to demonstrate the parser behavior.

Type a regex expression, then enter parse on a new line and press Enter to see the parsed AST output. 3ac9b184-e044-4ee9-bff8-aff03b881621bf41a97a-9685-4457-bf99-2707d6b2404b5cb489d9-2d4b-4105-9c55-23e1ffbcfb14


📢 Feedback, Suggestions, and Discussions are Very Welcome!

I’d love to hear your thoughts on this project. If you have any suggestions, issues, or feature requests, please feel free to open an issue or contribute to the discussion.

Your feedback will help make this project even better! 🚀


📄 License

MIT

About

Visualizer, debugger, and editor for regex

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

A visualizer, debugger, and editor for C#-style regex.

regexdev focuses on making the internal structure and matching process of regex visible.
It parses regular expressions into an AST, visualizes them, and allows step-by-step debugging of the matching process.


🎬 Demonstration

All functions

Demonstration3

Parsing

Parse1

Debugging

Debug1

Editing

Edit

Multi-Display

MultiDisplay1

Breakpoints

Breakpoints


🚀 Features

  • 🔍 Regex AST visualizer
  • 🐞 Step-by-step regex debugger
  • ✏️ Interactive regex editor
  • 🧩 Breakpoints in the matching process
  • 🖥️ Multi-panel / multi-view display
  • 🎞️ Matching process playback

✅ Verification & Correctness

How does regexdev ensure the matching process is correct?

The matching results are continuously verified against the official C# regex engine:

  1. Compare Index and Length of every capture in every group
  2. Compare the total number of Matches
  3. If any difference is detected, a warning will be shown immediately

This makes regexdev suitable not only for visualization, but also for learning, debugging, and validating complex regex behavior.


🏷️ Tags / Capabilities

  • Regex Visualizer
  • Regex Debugger
  • Regex Editor
  • Regex Breakpoint System
  • Multi-View Regex Inspection

🧠 About the Code

⚠️Important note

This repository currently contains only the regex parser.

The full regexdev tool also includes a matcher, debugger runtime, and UI layers, but those parts are not open-sourced yet due to ongoing refactoring and cleanup.

Why only the parser?

This project originally started as an experimental tool, and the early matching implementation was tightly coupled and difficult to maintain.
Recently, I redesigned and rewrote the regex parser from scratch with a much cleaner architecture:

  • Explicit AST-based design
  • Clear separation of parsing stages
  • Easier to inspect, extend, and visualize

As a result, the parser became the most stable and reusable part of the project, and is published independently.

Especially:

I wrote a C# regex to replace the lexer and handle most grammar checks.

I didn’t want to write a lexical analyzer. 🚫

Extension point

If you want to experiment with your own parsing logic or build additional tooling on top of it, the main entry point is:

newRegexParse().Parse(...)

This allows you to focus on analysis, visualization, or matching logic,
without having to implement a regex lexer from scratch.


💻 Console Demo

A minimal console application is included to demonstrate the parser behavior.

Type a regex expression, then enter parse on a new line and press Enter to see the parsed AST output. 3ac9b184-e044-4ee9-bff8-aff03b881621bf41a97a-9685-4457-bf99-2707d6b2404b5cb489d9-2d4b-4105-9c55-23e1ffbcfb14


📢 Feedback, Suggestions, and Discussions are Very Welcome!

I’d love to hear your thoughts on this project. If you have any suggestions, issues, or feature requests, please feel free to open an issue or contribute to the discussion.

Your feedback will help make this project even better! 🚀


📄 License

MIT

About

Visualizer, debugger, and editor for regex

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

A visualizer, debugger, and editor for C#-style regex.

regexdev focuses on making the internal structure and matching process of regex visible.
It parses regular expressions into an AST, visualizes them, and allows step-by-step debugging of the matching process.


🎬 Demonstration

All functions

Demonstration3

Parsing

Parse1

Debugging

Debug1

Editing

Edit

Multi-Display

MultiDisplay1

Breakpoints

Breakpoints


🚀 Features

  • 🔍 Regex AST visualizer
  • 🐞 Step-by-step regex debugger
  • ✏️ Interactive regex editor
  • 🧩 Breakpoints in the matching process
  • 🖥️ Multi-panel / multi-view display
  • 🎞️ Matching process playback

✅ Verification & Correctness

How does regexdev ensure the matching process is correct?

The matching results are continuously verified against the official C# regex engine:

  1. Compare Index and Length of every capture in every group
  2. Compare the total number of Matches
  3. If any difference is detected, a warning will be shown immediately

This makes regexdev suitable not only for visualization, but also for learning, debugging, and validating complex regex behavior.


🏷️ Tags / Capabilities

  • Regex Visualizer
  • Regex Debugger
  • Regex Editor
  • Regex Breakpoint System
  • Multi-View Regex Inspection

🧠 About the Code

⚠️Important note

This repository currently contains only the regex parser.

The full regexdev tool also includes a matcher, debugger runtime, and UI layers, but those parts are not open-sourced yet due to ongoing refactoring and cleanup.

Why only the parser?

This project originally started as an experimental tool, and the early matching implementation was tightly coupled and difficult to maintain.
Recently, I redesigned and rewrote the regex parser from scratch with a much cleaner architecture:

  • Explicit AST-based design
  • Clear separation of parsing stages
  • Easier to inspect, extend, and visualize

As a result, the parser became the most stable and reusable part of the project, and is published independently.

Especially:

I wrote a C# regex to replace the lexer and handle most grammar checks.

I didn’t want to write a lexical analyzer. 🚫

Extension point

If you want to experiment with your own parsing logic or build additional tooling on top of it, the main entry point is:

newRegexParse().Parse(...)

This allows you to focus on analysis, visualization, or matching logic,
without having to implement a regex lexer from scratch.


💻 Console Demo

A minimal console application is included to demonstrate the parser behavior.

Type a regex expression, then enter parse on a new line and press Enter to see the parsed AST output. 3ac9b184-e044-4ee9-bff8-aff03b881621bf41a97a-9685-4457-bf99-2707d6b2404b5cb489d9-2d4b-4105-9c55-23e1ffbcfb14


📢 Feedback, Suggestions, and Discussions are Very Welcome!

I’d love to hear your thoughts on this project. If you have any suggestions, issues, or feature requests, please feel free to open an issue or contribute to the discussion.

Your feedback will help make this project even better! 🚀


📄 License

MIT

About

Visualizer, debugger, and editor for regex

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

A visualizer, debugger, and editor for C#-style regex.

regexdev focuses on making the internal structure and matching process of regex visible.
It parses regular expressions into an AST, visualizes them, and allows step-by-step debugging of the matching process.


🎬 Demonstration

All functions

Demonstration3

Parsing

Parse1

Debugging

Debug1

Editing

Edit

Multi-Display

MultiDisplay1

Breakpoints

Breakpoints


🚀 Features

  • 🔍 Regex AST visualizer
  • 🐞 Step-by-step regex debugger
  • ✏️ Interactive regex editor
  • 🧩 Breakpoints in the matching process
  • 🖥️ Multi-panel / multi-view display
  • 🎞️ Matching process playback

✅ Verification & Correctness

How does regexdev ensure the matching process is correct?

The matching results are continuously verified against the official C# regex engine:

  1. Compare Index and Length of every capture in every group
  2. Compare the total number of Matches
  3. If any difference is detected, a warning will be shown immediately

This makes regexdev suitable not only for visualization, but also for learning, debugging, and validating complex regex behavior.


🏷️ Tags / Capabilities

  • Regex Visualizer
  • Regex Debugger
  • Regex Editor
  • Regex Breakpoint System
  • Multi-View Regex Inspection

🧠 About the Code

⚠️Important note

This repository currently contains only the regex parser.

The full regexdev tool also includes a matcher, debugger runtime, and UI layers, but those parts are not open-sourced yet due to ongoing refactoring and cleanup.

Why only the parser?

This project originally started as an experimental tool, and the early matching implementation was tightly coupled and difficult to maintain.
Recently, I redesigned and rewrote the regex parser from scratch with a much cleaner architecture:

  • Explicit AST-based design
  • Clear separation of parsing stages
  • Easier to inspect, extend, and visualize

As a result, the parser became the most stable and reusable part of the project, and is published independently.

Especially:

I wrote a C# regex to replace the lexer and handle most grammar checks.

I didn’t want to write a lexical analyzer. 🚫

Extension point

If you want to experiment with your own parsing logic or build additional tooling on top of it, the main entry point is:

newRegexParse().Parse(...)

This allows you to focus on analysis, visualization, or matching logic,
without having to implement a regex lexer from scratch.


💻 Console Demo

A minimal console application is included to demonstrate the parser behavior.

Type a regex expression, then enter parse on a new line and press Enter to see the parsed AST output. 3ac9b184-e044-4ee9-bff8-aff03b881621bf41a97a-9685-4457-bf99-2707d6b2404b5cb489d9-2d4b-4105-9c55-23e1ffbcfb14


📢 Feedback, Suggestions, and Discussions are Very Welcome!

I’d love to hear your thoughts on this project. If you have any suggestions, issues, or feature requests, please feel free to open an issue or contribute to the discussion.

Your feedback will help make this project even better! 🚀


📄 License

MIT

About

Visualizer, debugger, and editor for regex

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

A visualizer, debugger, and editor for C#-style regex.

regexdev focuses on making the internal structure and matching process of regex visible.
It parses regular expressions into an AST, visualizes them, and allows step-by-step debugging of the matching process.


🎬 Demonstration

All functions

Demonstration3

Parsing

Parse1

Debugging

Debug1

Editing

Edit

Multi-Display

MultiDisplay1

Breakpoints

Breakpoints


🚀 Features

  • 🔍 Regex AST visualizer
  • 🐞 Step-by-step regex debugger
  • ✏️ Interactive regex editor
  • 🧩 Breakpoints in the matching process
  • 🖥️ Multi-panel / multi-view display
  • 🎞️ Matching process playback

✅ Verification & Correctness

How does regexdev ensure the matching process is correct?

The matching results are continuously verified against the official C# regex engine:

  1. Compare Index and Length of every capture in every group
  2. Compare the total number of Matches
  3. If any difference is detected, a warning will be shown immediately

This makes regexdev suitable not only for visualization, but also for learning, debugging, and validating complex regex behavior.


🏷️ Tags / Capabilities

  • Regex Visualizer
  • Regex Debugger
  • Regex Editor
  • Regex Breakpoint System
  • Multi-View Regex Inspection

🧠 About the Code

⚠️Important note

This repository currently contains only the regex parser.

The full regexdev tool also includes a matcher, debugger runtime, and UI layers, but those parts are not open-sourced yet due to ongoing refactoring and cleanup.

Why only the parser?

This project originally started as an experimental tool, and the early matching implementation was tightly coupled and difficult to maintain.
Recently, I redesigned and rewrote the regex parser from scratch with a much cleaner architecture:

  • Explicit AST-based design
  • Clear separation of parsing stages
  • Easier to inspect, extend, and visualize

As a result, the parser became the most stable and reusable part of the project, and is published independently.

Especially:

I wrote a C# regex to replace the lexer and handle most grammar checks.

I didn’t want to write a lexical analyzer. 🚫

Extension point

If you want to experiment with your own parsing logic or build additional tooling on top of it, the main entry point is:

newRegexParse().Parse(...)

This allows you to focus on analysis, visualization, or matching logic,
without having to implement a regex lexer from scratch.


💻 Console Demo

A minimal console application is included to demonstrate the parser behavior.

Type a regex expression, then enter parse on a new line and press Enter to see the parsed AST output. 3ac9b184-e044-4ee9-bff8-aff03b881621bf41a97a-9685-4457-bf99-2707d6b2404b5cb489d9-2d4b-4105-9c55-23e1ffbcfb14


📢 Feedback, Suggestions, and Discussions are Very Welcome!

I’d love to hear your thoughts on this project. If you have any suggestions, issues, or feature requests, please feel free to open an issue or contribute to the discussion.

Your feedback will help make this project even better! 🚀


📄 License

MIT

About

Visualizer, debugger, and editor for regex

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

A visualizer, debugger, and editor for C#-style regex.

regexdev focuses on making the internal structure and matching process of regex visible.
It parses regular expressions into an AST, visualizes them, and allows step-by-step debugging of the matching process.


🎬 Demonstration

All functions

Demonstration3

Parsing

Parse1

Debugging

Debug1

Editing

Edit

Multi-Display

MultiDisplay1

Breakpoints

Breakpoints


🚀 Features

  • 🔍 Regex AST visualizer
  • 🐞 Step-by-step regex debugger
  • ✏️ Interactive regex editor
  • 🧩 Breakpoints in the matching process
  • 🖥️ Multi-panel / multi-view display
  • 🎞️ Matching process playback

✅ Verification & Correctness

How does regexdev ensure the matching process is correct?

The matching results are continuously verified against the official C# regex engine:

  1. Compare Index and Length of every capture in every group
  2. Compare the total number of Matches
  3. If any difference is detected, a warning will be shown immediately

This makes regexdev suitable not only for visualization, but also for learning, debugging, and validating complex regex behavior.


🏷️ Tags / Capabilities

  • Regex Visualizer
  • Regex Debugger
  • Regex Editor
  • Regex Breakpoint System
  • Multi-View Regex Inspection

🧠 About the Code

⚠️Important note

This repository currently contains only the regex parser.

The full regexdev tool also includes a matcher, debugger runtime, and UI layers, but those parts are not open-sourced yet due to ongoing refactoring and cleanup.

Why only the parser?

This project originally started as an experimental tool, and the early matching implementation was tightly coupled and difficult to maintain.
Recently, I redesigned and rewrote the regex parser from scratch with a much cleaner architecture:

  • Explicit AST-based design
  • Clear separation of parsing stages
  • Easier to inspect, extend, and visualize

As a result, the parser became the most stable and reusable part of the project, and is published independently.

Especially:

I wrote a C# regex to replace the lexer and handle most grammar checks.

I didn’t want to write a lexical analyzer. 🚫

Extension point

If you want to experiment with your own parsing logic or build additional tooling on top of it, the main entry point is:

newRegexParse().Parse(...)

This allows you to focus on analysis, visualization, or matching logic,
without having to implement a regex lexer from scratch.


💻 Console Demo

A minimal console application is included to demonstrate the parser behavior.

Type a regex expression, then enter parse on a new line and press Enter to see the parsed AST output. 3ac9b184-e044-4ee9-bff8-aff03b881621bf41a97a-9685-4457-bf99-2707d6b2404b5cb489d9-2d4b-4105-9c55-23e1ffbcfb14


📢 Feedback, Suggestions, and Discussions are Very Welcome!

I’d love to hear your thoughts on this project. If you have any suggestions, issues, or feature requests, please feel free to open an issue or contribute to the discussion.

Your feedback will help make this project even better! 🚀


📄 License

MIT

About

Visualizer, debugger, and editor for regex

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

A visualizer, debugger, and editor for C#-style regex.

regexdev focuses on making the internal structure and matching process of regex visible.
It parses regular expressions into an AST, visualizes them, and allows step-by-step debugging of the matching process.


🎬 Demonstration

All functions

Demonstration3

Parsing

Parse1

Debugging

Debug1

Editing

Edit

Multi-Display

MultiDisplay1

Breakpoints

Breakpoints


🚀 Features

  • 🔍 Regex AST visualizer
  • 🐞 Step-by-step regex debugger
  • ✏️ Interactive regex editor
  • 🧩 Breakpoints in the matching process
  • 🖥️ Multi-panel / multi-view display
  • 🎞️ Matching process playback

✅ Verification & Correctness

How does regexdev ensure the matching process is correct?

The matching results are continuously verified against the official C# regex engine:

  1. Compare Index and Length of every capture in every group
  2. Compare the total number of Matches
  3. If any difference is detected, a warning will be shown immediately

This makes regexdev suitable not only for visualization, but also for learning, debugging, and validating complex regex behavior.


🏷️ Tags / Capabilities

  • Regex Visualizer
  • Regex Debugger
  • Regex Editor
  • Regex Breakpoint System
  • Multi-View Regex Inspection

🧠 About the Code

⚠️Important note

This repository currently contains only the regex parser.

The full regexdev tool also includes a matcher, debugger runtime, and UI layers, but those parts are not open-sourced yet due to ongoing refactoring and cleanup.

Why only the parser?

This project originally started as an experimental tool, and the early matching implementation was tightly coupled and difficult to maintain.
Recently, I redesigned and rewrote the regex parser from scratch with a much cleaner architecture:

  • Explicit AST-based design
  • Clear separation of parsing stages
  • Easier to inspect, extend, and visualize

As a result, the parser became the most stable and reusable part of the project, and is published independently.

Especially:

I wrote a C# regex to replace the lexer and handle most grammar checks.

I didn’t want to write a lexical analyzer. 🚫

Extension point

If you want to experiment with your own parsing logic or build additional tooling on top of it, the main entry point is:

newRegexParse().Parse(...)

This allows you to focus on analysis, visualization, or matching logic,
without having to implement a regex lexer from scratch.


💻 Console Demo

A minimal console application is included to demonstrate the parser behavior.

Type a regex expression, then enter parse on a new line and press Enter to see the parsed AST output. 3ac9b184-e044-4ee9-bff8-aff03b881621bf41a97a-9685-4457-bf99-2707d6b2404b5cb489d9-2d4b-4105-9c55-23e1ffbcfb14


📢 Feedback, Suggestions, and Discussions are Very Welcome!

I’d love to hear your thoughts on this project. If you have any suggestions, issues, or feature requests, please feel free to open an issue or contribute to the discussion.

Your feedback will help make this project even better! 🚀


📄 License

MIT

About

Visualizer, debugger, and editor for regex

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

A visualizer, debugger, and editor for C#-style regex.

regexdev focuses on making the internal structure and matching process of regex visible.
It parses regular expressions into an AST, visualizes them, and allows step-by-step debugging of the matching process.


🎬 Demonstration

All functions

Demonstration3

Parsing

Parse1

Debugging

Debug1

Editing

Edit

Multi-Display

MultiDisplay1

Breakpoints

Breakpoints


🚀 Features

  • 🔍 Regex AST visualizer
  • 🐞 Step-by-step regex debugger
  • ✏️ Interactive regex editor
  • 🧩 Breakpoints in the matching process
  • 🖥️ Multi-panel / multi-view display
  • 🎞️ Matching process playback

✅ Verification & Correctness

How does regexdev ensure the matching process is correct?

The matching results are continuously verified against the official C# regex engine:

  1. Compare Index and Length of every capture in every group
  2. Compare the total number of Matches
  3. If any difference is detected, a warning will be shown immediately

This makes regexdev suitable not only for visualization, but also for learning, debugging, and validating complex regex behavior.


🏷️ Tags / Capabilities

  • Regex Visualizer
  • Regex Debugger
  • Regex Editor
  • Regex Breakpoint System
  • Multi-View Regex Inspection

🧠 About the Code

⚠️Important note

This repository currently contains only the regex parser.

The full regexdev tool also includes a matcher, debugger runtime, and UI layers, but those parts are not open-sourced yet due to ongoing refactoring and cleanup.

Why only the parser?

This project originally started as an experimental tool, and the early matching implementation was tightly coupled and difficult to maintain.
Recently, I redesigned and rewrote the regex parser from scratch with a much cleaner architecture:

  • Explicit AST-based design
  • Clear separation of parsing stages
  • Easier to inspect, extend, and visualize

As a result, the parser became the most stable and reusable part of the project, and is published independently.

Especially:

I wrote a C# regex to replace the lexer and handle most grammar checks.

I didn’t want to write a lexical analyzer. 🚫

Extension point

If you want to experiment with your own parsing logic or build additional tooling on top of it, the main entry point is:

newRegexParse().Parse(...)

This allows you to focus on analysis, visualization, or matching logic,
without having to implement a regex lexer from scratch.


💻 Console Demo

A minimal console application is included to demonstrate the parser behavior.

Type a regex expression, then enter parse on a new line and press Enter to see the parsed AST output. 3ac9b184-e044-4ee9-bff8-aff03b881621bf41a97a-9685-4457-bf99-2707d6b2404b5cb489d9-2d4b-4105-9c55-23e1ffbcfb14


📢 Feedback, Suggestions, and Discussions are Very Welcome!

I’d love to hear your thoughts on this project. If you have any suggestions, issues, or feature requests, please feel free to open an issue or contribute to the discussion.

Your feedback will help make this project even better! 🚀


📄 License

MIT

About

Visualizer, debugger, and editor for regex

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages