Regular Expressions 101

Community Patterns

22

Get path from any text

Created·2023-01-31 14:38
Updated·2023-07-23 20:17
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 Expression
Created·2018-03-18 06:01
Flavor·PCRE (Legacy)

/
(?<freecall_7digitspecial>^180[ |-]{0,1}2[ |-]{0,1}[0-9]{1}[ |-]{0,1}[0-9]{2}$)|(?<freeANDlocalrate_3grouping_std>^1800|1300[ |-]{0,1}[0-9]{3}[ |-]{0,1}[0-9]{3}$)|(?<freeANDlocalrate_2grouping_std>^1800|1300[ |-]{0,1}[0-9]{2}[ |-]{0,1}[0-9]{2}[ |-]{0,1}[0-9]{2}$)|(?<localrate_6digitspecial>^13[ |-]{0,1}[0-9]{2}[ |-]{0,1}[0-9]{2}$)|(?<landlineGeoNSW_4grouping_8digit>^[1-9]{1}[0-9]{3}[ |-]{0,1}[0-9]{4}$)|(?<landlineGeoAreaCode_10digit>^0[2|3|7|8][ |-]{0,1}[0-9]{4}[ |-]{0,1}[0-9]{4}$)
/
g
Open regex in editor

Description

Supports: Priority and local call numbers - 13 XX XX, 1300 XXX XXX, 13XXXX, 1300 XX XX XX, 1300 XXXXXX, 130XXXXXX Freecall special numbers - 1802 XXX, 1802XXX Freecall numbers - 1800 XX XX XX, 1800 XXX XXX, 1800XXXXXX, 1800 XXXXXX landline numbers (no area code) - XXXX-XXXX, XXXXXXXX landline (areacode) - 0X XXXX-XXXX, 0X XXXXXXXX

Caveats:

  • Supports for space and hyphens where logical and popular
  • Landline areacode expects 02,03,07,08 areacode prefix
  • Landline no areacode will not accept a 0 as first digit
  • Priority Local rate 13 is 6 digits
  • Priority Local rate 1300 is 10 digits (no support for the 4 digit overrun)
  • Freecall Special 1802 is 7 digits
  • Freecall 1800 is 10 digits (no support for the 4 digit overrun)
  • No mobile
  • No International dialing prefix
  • No support for brackets on areacode or priority number prefix (conscious decision)

Reference used for rules: https://en.wikipedia.org/wiki/Telephone_numbers_in_Australia#Local_Rate_and_FreeCall_numbers_(13,_180) Wikipedia @ 18Mar2018

Submitted by Kool kat