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

0

Regular ExpressionOpen Workspace

/
^(((((?<feature>feature-[\w-~]+)\.)?((?<isAPI>api)\.)?)|((?<namespace>[\w-~]+)\.)|((?<noMatch>[\w-~\.]+)\.)))?(?<domain>\w+\.\w+)$
/
gm

Description
Created·2020-05-04 16:08
Type·Match
Flavor·PCRE (Legacy)

This regex sets different parts of the url host in variables :

  • $domain
  • $namespace
  • $feature
  • $isAPI
  • $noMatch

In the host name we want to be able to determine the following:

  • Domain: if not on a handled DNS domains, an error 503 'no Service' is returned
  • Subdomain: The subdomain contains parts that will redirect the request upstream or send errors, considering the following.
    • empty subdomain redirects to www namespace with code 301
    • Feature: when the first member of the subdomain is prefixed by feature-, redirects to the proper 'feature' upstream built server feature-*.app:8080
    • API: when the subdomain contains api as last element, it is redirected to the API node server (eventually the one of a dedicated feature) [feature-*|default].api:8081
    • Namespace: any single string subdomain different from the 2 above, redirected upstream to the default staging server default.app:8080.
    • noMatch: all uncatched subdomain pattern results in an error 503 no Service

If no upstream server is found, the nginx proxy will return an error 502 maintenance

Submitted by Anonymous
Open Workspace