Regular Expressions 101

Community Library

23

Get path from any text

Created·2023-01-31 14:38
Updated·2023-07-23 20:17
Type·Match
Flavor·PCRE2 (PHP)
Recommended·
Get path (windows style) from any type of text (error message, e-mail corps ...), quoted or not. THIS IS THE SINGLE LINE VERSION ! If you want understand how it work or edit it, go https://regex101.com/r/7o2fyy Relative path are not supported The goal is to catch what "Look like" a path. See the limitations UNC path and prefix path like //./], [//?/] or [//./UNC/] are allowed some url path like [file:///C:/] or [file://] are allowed Catch path quoted with ["] and [']. But these quotes are include with the catch Quoted path is not concerned by limitations Limitations : (only unquoted path) [dot] and [space] is allowed, but not in a row [dot+space] or [space+dot at end of file name isn't catched INSIDE A NAME FILE (or last directory if it is a path to a directory) : [comma] is not supported (it stop the catch) after a first [dot], any [space] stop the catch after a [space], catch is stoped if next character is not a [letter], [digit] or [-] so, double [space] stop the catch Compatibility compatible PCRE, PCRE2 AutoHotkey : don't forget to escape "%" in "`%" /!\ Powershell and .Net /!\\ : this regex need some modification to be interpreted by powershell. You have to replace each (?&CapturGroupName) by \k. Use this powershell code to do this replacement : ` $powershellRegex = @' [Put here the regex to replace (?&CapturGroupName) with \k] '@ -replace '\(\?&(\w+)\)', '\k' ` This example code must return : [Put here the regex to replace \k with \k]
Submitted by nitrateag

Community Library Entry

1

Regular ExpressionOpen Workspace

@"
\A(?>//[^\r\n]*|/\*[\s\S]*?\*/|\s+|[^\{\[]+)*|(?<json>(?:\{(?:(?>(?:""(?:\\.|[^""])*""|//[^\r\n]*|/\*[\s\S]*?\*/|[^{}\[\]""/]+|/(?![/*])))|(?<o>\{)|(?<-o>\})|(?<a>\[)|(?<-a>\]))*(?(o)(?!))(?(a)(?!))\}|\[(?:(?>(?:""(?:\\.|[^""])*""|//[^\r\n]*|/\*[\s\S]*?\*/|[^{}\[\]""/]+|/(?![/*])))|(?<o>\{)|(?<-o>\})|(?<a>\[)|(?<-a>\]))*(?(o)(?!))(?(a)(?!))\]))|(?>//[^\r\n]*|/\*[\s\S]*?\*/|\s+|.+)*\z
"
g

Description
Created·2026-08-01 17:48
Updated·2026-08-01 18:10
Type·Match
Flavor·.NET 7.0 (C#)

A .NET regular expression for extracting a single root-level JSON block from text.

Supports:

  • Root objects { ... }
  • Root arrays [ ... ]
  • Nested objects and arrays
  • Escaped quotes inside strings
  • Single-line comments // ...
  • Multi-line comments /* ... */

This regex performs structural matching only. It validates balanced braces/brackets and ignores delimiters inside strings and comments.

Features

  • Captures the JSON block in the json group.
  • Allows comments and whitespace before and after the JSON block.
  • Uses .NET balancing groups for nested structures.
  • Designed as a first parsing stage before actual JSON deserialization.

Limitations

This is not a full JSON parser.

It does not validate:

  • JSON syntax rules
  • Property names
  • Value types
  • Duplicate keys
  • Commas and separators

Use a real JSON parser after extracting the block.

Compatibility

Requires a regex engine with balancing group support:

  • ✅ .NET System.Text.RegularExpressions
  • ❌ JavaScript RegExp
  • ❌ Python re
  • ❌ RE2

Example

Input:

// config
{
    "name": "example",
    "items": [
        1,
        2
    ]
}

Results:

Groups["json"] -> { "name": "example", "items": [1, 2] }
Submitted by Pavel Bashkardin
Open Workspace