With Powershell, I want to extract from a video markers EDL file (Edit Decision List), the content related the Marker name. Here an example of an EDL line
|C:ResolveColorBlue |M:The Importance of Planning and Preparedness |D:1
I want all what's contained after |M: and before |D: and assign it to a variable.
I applied Regex
$MarkerName = [regex]::Match($line, '[^|M:]+(?= |D:)').Value
In my mind it should extract all what's included between |M: and |D:
I saw an example here https://collectingwisdom.com/powershell-substring-after-character/
No it doesn't. It extracts ResolveColorBlue and nothing else.
Io also tried to apply what's int here
powershell extract text between two strings
But it deosn't work. It's referred to a file, while I have already elaborated all the file content to get my string I need to filter
Where am I wrong please?
Your pattern, [^|M:]+(?= |D:), matches like this:
[^|M:]+ - one or more occurrences (+) of any characters but | and
M ([^|M:], a negated character class)(?= |D:) - that is immediately followed with either a space or D:.As you see here (mind the selected .NET regex engine on the left!), the match is really ResolveColorBlue as the matching can start after the first : as there is no : and | until the first space, and then it matches till the first whitespace since right after it there is a | char and it cannot be matched with [^|M]. You can see for yourself how the regex engine processes the string at regex101.com:

Use
(?<=\|M:).*?(?=\|D:)
Or, to trim any whitespaces from the match with the regex itself:
(?<=\|M:\s*).*?(?=\s*\|D:)
This regex (see its demo) extracts strings between |M and |D:.
The pipe must be escaped to match a literal | char.
More details:
(?<=\|M:\s*) - a positive lookbehind that matches a location that is immediately preceded with |M: and any zero or more whitespaces.*? - any zero or more chars other than newline as few as possible(?=\s*\|D:) - a positive lookahead that matches a location that is immediately followed with any zero or more whitespaces and then |D:.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With