http://qs321.pair.com?node_id=11136558


in reply to Re^2: Regex to get file name from the path with spaces
in thread Regex to get file name from the path with spaces

Maybe you can think of your capture problem in a different way then. Most likely, you want everything after the last "path separator" up until the double quotes:

TEXT:\s+".*?[\\/]([^\\/"]+)"

The filename can contain everything except a path separator (\ or /) and double quotes, and must be followed by double quotes.

Replies are listed 'Best First'.
Re^4: Regex to get file name from the path with spaces
by szpt9m (Novice) on Sep 08, 2021 at 08:56 UTC
    Thanks This worked for me .*TEXT:\s+".*?[\\\/]([^\\\/"]+)"
Re^4: Regex to get file name from the path with spaces
by szpt9m (Novice) on Sep 08, 2021 at 08:45 UTC
    somehow it is not working for me or am i doing something wrong :( used it like this  .*TEXT:\s+".*?[\/]([\/"]+)" as \\ was not recognized and for my input TEXT: "C:\temp\test äbc.txt" there were no matches found
      You're missing the negation ^ in the character class. Also, you're using forward slashes in the regex, but backslashes in the string. Moreover, I'm not sure the ? is needed.
      #! /usr/bin/perl use strict; use warnings; use utf8; my $input = 'TEXT: "C:\temp\test äbc.txt"'; print $input =~ /.*TEXT:\s+".*[\\]([^\\"]+)"/; # ~ ~ ~ ~
      map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]