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-07-08 08:14
Flavor·PCRE (Legacy)

/
^(?:^|\|)(?:0(?=[^|]+\|[0-9])|1(?=[^|]+\|[1-9])|2(?=[^|]+\|[2-9])|3(?=[^|]+\|[3-9])|4(?=[^|]+\|[4-9])|5(?=[^|]+\|[5-9])|6(?=[^|]+\|[6-9])|7(?=[^|]+\|[7-9])|9(?=[^|]+\|[9-9])|9(?=[^|]+\|9))(?#1-1 )(?:0(?=[^|]+\|.[0-9])|1(?=[^|]+\|.[1-9])|2(?=[^|]+\|.[2-9])|3(?=[^|]+\|.[3-9])|4(?=[^|]+\|.[4-9])|5(?=[^|]+\|.[5-9])|6(?=[^|]+\|.[6-9])|7(?=[^|]+\|.[7-9])|9(?=[^|]+\|.[9-9])|9(?=[^|]+\|.9))(?#1-2 )(?:0(?=[^|]+\|.{2}[0-9])|1(?=[^|]+\|.{2}[1-9])|2(?=[^|]+\|.{2}[2-9])|3(?=[^|]+\|.{2}[3-9])|4(?=[^|]+\|.{2}[4-9])|5(?=[^|]+\|.{2}[5-9])|6(?=[^|]+\|.{2}[6-9])|7(?=[^|]+\|.{2}[7-9])|9(?=[^|]+\|.{2}[9-9])|9(?=[^|]+\|.{2}9))(?#1-3 )(?:0(?=[^|]+\|.{3}[0-9])|1(?=[^|]+\|.{3}[1-9])|2(?=[^|]+\|.{3}[2-9])|3(?=[^|]+\|.{3}[3-9])|4(?=[^|]+\|.{3}[4-9])|5(?=[^|]+\|.{3}[5-9])|6(?=[^|]+\|.{3}[6-9])|7(?=[^|]+\|.{3}[7-9])|9(?=[^|]+\|.{3}[9-9])|9(?=[^|]+\|.{3}9))(?#1-4 )\-(?:0(?=[^|]+\|.{5}[0-9])|1(?=[^|]+\|.{5}[1-9])|2(?=[^|]+\|.{5}[2-9])|3(?=[^|]+\|.{5}[3-9])|4(?=[^|]+\|.{5}[4-9])|5(?=[^|]+\|.{5}[5-9])|6(?=[^|]+\|.{5}[6-9])|7(?=[^|]+\|.{5}[7-9])|9(?=[^|]+\|.{5}[9-9])|9(?=[^|]+\|.{5}9))(?#1-5 )(?:0(?=[^|]+\|.{6}[0-9])|1(?=[^|]+\|.{6}[1-9])|2(?=[^|]+\|.{6}[2-9])|3(?=[^|]+\|.{6}[3-9])|4(?=[^|]+\|.{6}[4-9])|5(?=[^|]+\|.{6}[5-9])|6(?=[^|]+\|.{6}[6-9])|7(?=[^|]+\|.{6}[7-9])|9(?=[^|]+\|.{6}[9-9])|9(?=[^|]+\|.{6}9))(?#1-6 )(?:0(?=[^|]+\|.{7}[0-9])|1(?=[^|]+\|.{7}[1-9])|2(?=[^|]+\|.{7}[2-9])|3(?=[^|]+\|.{7}[3-9])|4(?=[^|]+\|.{7}[4-9])|5(?=[^|]+\|.{7}[5-9])|6(?=[^|]+\|.{7}[6-9])|7(?=[^|]+\|.{7}[7-9])|9(?=[^|]+\|.{7}[9-9])|9(?=[^|]+\|.{7}9))(?#1-7 )(?:0(?=\|.{8}[0-9])|1(?=\|.{8}[1-9])|2(?=\|.{8}[2-9])|3(?=\|.{8}[3-9])|4(?=\|.{8}[4-9])|5(?=\|.{8}[5-9])|6(?=\|.{8}[6-9])|7(?=\|.{8}[7-9])|9(?=\|.{8}[9-9])|9(?=\|.{8}9))(?#1-8 )((?:\|)(?:0(?=[^|]+\|[0-9])|1(?=[^|]+\|[1-9])|2(?=[^|]+\|[2-9])|3(?=[^|]+\|[3-9])|4(?=[^|]+\|[4-9])|5(?=[^|]+\|[5-9])|6(?=[^|]+\|[6-9])|7(?=[^|]+\|[7-9])|9(?=[^|]+\|[9-9])|9(?=[^|]+\|9))(?#2-1 )(?:0(?=[^|]+\|.[0-9])|1(?=[^|]+\|.[1-9])|2(?=[^|]+\|.[2-9])|3(?=[^|]+\|.[3-9])|4(?=[^|]+\|.[4-9])|5(?=[^|]+\|.[5-9])|6(?=[^|]+\|.[6-9])|7(?=[^|]+\|.[7-9])|9(?=[^|]+\|.[9-9])|9(?=[^|]+\|.9))(?#2-2 )(?:0(?=[^|]+\|.{2}[0-9])|1(?=[^|]+\|.{2}[1-9])|2(?=[^|]+\|.{2}[2-9])|3(?=[^|]+\|.{2}[3-9])|4(?=[^|]+\|.{2}[4-9])|5(?=[^|]+\|.{2}[5-9])|6(?=[^|]+\|.{2}[6-9])|7(?=[^|]+\|.{2}[7-9])|9(?=[^|]+\|.{2}[9-9])|9(?=[^|]+\|.{2}9))(?#2-3 )(?:0(?=[^|]+\|.{3}[0-9])|1(?=[^|]+\|.{3}[1-9])|2(?=[^|]+\|.{3}[2-9])|3(?=[^|]+\|.{3}[3-9])|4(?=[^|]+\|.{3}[4-9])|5(?=[^|]+\|.{3}[5-9])|6(?=[^|]+\|.{3}[6-9])|7(?=[^|]+\|.{3}[7-9])|9(?=[^|]+\|.{3}[9-9])|9(?=[^|]+\|.{3}9))(?#2-4 )\-(?:0(?=[^|]+\|.{5}[0-9])|1(?=[^|]+\|.{5}[1-9])|2(?=[^|]+\|.{5}[2-9])|3(?=[^|]+\|.{5}[3-9])|4(?=[^|]+\|.{5}[4-9])|5(?=[^|]+\|.{5}[5-9])|6(?=[^|]+\|.{5}[6-9])|7(?=[^|]+\|.{5}[7-9])|9(?=[^|]+\|.{5}[9-9])|9(?=[^|]+\|.{5}9))(?#2-5 )(?:0(?=[^|]+\|.{6}[0-9])|1(?=[^|]+\|.{6}[1-9])|2(?=[^|]+\|.{6}[2-9])|3(?=[^|]+\|.{6}[3-9])|4(?=[^|]+\|.{6}[4-9])|5(?=[^|]+\|.{6}[5-9])|6(?=[^|]+\|.{6}[6-9])|7(?=[^|]+\|.{6}[7-9])|9(?=[^|]+\|.{6}[9-9])|9(?=[^|]+\|.{6}9))(?#2-6 )(?:0(?=[^|]+\|.{7}[0-9])|1(?=[^|]+\|.{7}[1-9])|2(?=[^|]+\|.{7}[2-9])|3(?=[^|]+\|.{7}[3-9])|4(?=[^|]+\|.{7}[4-9])|5(?=[^|]+\|.{7}[5-9])|6(?=[^|]+\|.{7}[6-9])|7(?=[^|]+\|.{7}[7-9])|9(?=[^|]+\|.{7}[9-9])|9(?=[^|]+\|.{7}9))(?#2-7 )(?:0(?=\|.{8}[0-9])|1(?=\|.{8}[1-9])|2(?=\|.{8}[2-9])|3(?=\|.{8}[3-9])|4(?=\|.{8}[4-9])|5(?=\|.{8}[5-9])|6(?=\|.{8}[6-9])|7(?=\|.{8}[7-9])|9(?=\|.{8}[9-9])|9(?=\|.{8}9))(?#2-8 ))*\|\d{4}\-\d{4}$(?#a|b[|c]... )|^(?:0(?=.{4}[0-9])|1(?=.{4}[1-9])|2(?=.{4}[2-9])|3(?=.{4}[3-9])|4(?=.{4}[4-9])|5(?=.{4}[5-9])|6(?=.{4}[6-9])|7(?=.{4}[7-9])|9(?=.{4}[9-9])|9(?=.{4}9)){4}\-\d{4}$(?#single)
/
gm
Open regex in editor

Description

后面的数字大于前面的数字

Submitted by anonymous