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

1

Regular Expression
Created·2016-06-23 20:19
Flavor·Python

r"
#### NEGATIONS #### #Busy \b( #wrapper (?:(?:from|is|i|am|at|on|it|do|to|for|a|make|the |that|day|time|month|exactly |call|meeting|lunch|breakfast|brunch)[ ])* (?: #negative words (?:busy|can'?t|can[ ]?n?ot|unavailable|except) #negated positive words |(?:not|)[ ] (?:be|)?[ ]? (?:available|free|around|do|able) ) #wrapper [ ]?(?:(?:from|is|i|am|at|on|it|do|to|for|a|make|the |that|day|time|month|exactly |call|meeting|lunch|breakfast|brunch)[ ])* #wrapper gets one free word (?:[ ]? (?:\S+) [ ]?)? #Repeat wrapper so free word can be anywhere in continuation [ ]?(?:(?:from|is|i|am|at|on|it|do|to|for|a|make|the |that|day|time|month|exactly |call|meeting|lunch|breakfast|brunch)[ ])* [ ]?(|then|at[ ]that[ ]time) | #∂ Busy #reverse the above after everything else #am doing|at X at|on | ( ( (\b(?:am|are|will[ ]be)\b[ ]) (at|on|doing|\S+ing|OOO|out[ ]of[ ]office)[ ] #"Have a" is a special case. Can't have "a" in the second group. # | (?:have|has)[ ](?:an?)[ ] #"Have a" also needs a negative lookahead for various false positives # (?! .* (?:free|open|clean?r?|fresh|blank|vacant|bare|naked) ) #8 Free words, no \s\r\n or ".!?" ) (?:[^.• !?\r\n]+[ ]){0,8} #may need to come back to the below, ?'d out for now (?:at|on)? ) (|then|at[ ]that[ ]time) #REVERSE EXCEPT: "I am busy Tomorrow Except for 3-5pm" #"I have a 3pm" ) #busy (and also ∂) - NO ALTERNATION [ ]? (?:(?:(?:and|maybe|also|aswell|as| [\.,?!:;] ) [ ])* ())? #SAVIOUR STRINGS: Noone says "we can do X" after valid dates.They might: "We can also do X" | #"a" can't be the first word (?!a) #match continous strings made up of 2 groups of words ((?:(?:we|could|how|i|a|is|it|am|be|do|can|you|would)[ ])+ ) ((?:(?:it|on|at|to|do|from |have|can|able|make|about|free|exactly|say|call|take|possible|meet)[ ])+ ) ()
"
gmix
Open regex in editor

Description

no description available

Submitted by anonymous