Regular Expressions 101

Community Patterns

21

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·2020-08-17 06:58
Flavor·PCRE (Legacy)

/
<([a-zA-Z\d]+?)([^<>]|(?!.*href).*)>([^<>]*?)(小编)([^<>]*?)(<\/\1>)
/
gm
Open regex in editor

Description

排除掉标签中带href的 php使用方法 /** * 将HTML中的关键词 替换为关键词链接 * @param string $html 处理的html * @param array $keyWord 关键词数组 * @param array $link 链接数组 * @param int $changeNum 同一关键词替换次数 * @param bool $newWindow 链接是否新窗口打开 * @return string|string[]|null */ public function linkKeyword($html, array $keyWord, array $link, $changeNum = 1, $newWindow = true) { $re = '/<([a-zA-Z\d]+?)([^<>]|(?!.*href).*)>([^<>]*?)({key})([^<>]*?)(<\/\1>)/m'; $con = $newWindow ? '<$1$2>$3<a href="{link}" target="_blank">$4</a>$5$6' : '<$1$2>$3<a href="{link}">$4</a>$5$6'; $regex = $cons = []; foreach ($keyWord as $key => $item) { $regex[] = str_replace('{key}', $item, $re); $cons[] = str_replace('{link}', $link[$key], $con); } return preg_replace($regex, $cons, $html, $changeNum); }

Submitted by anonymous