in reply to Regex question
You're being too specific. Your goal is simply to get the last thing between two slashes.
my ($dir) = m{/([^/]+)/[^/]*$};
Notice I changed the regexp's delimiters so I didn't have to escape the slashes.
I removed the if. That will set $dir to undef on failure. Add the if back if you want to keep $dir's previous value on failure.
Technically, you could omit the leading slash from the regexp, but I think it'll be more efficient with it.
Update: Since you mentioned you wanted to study my regexp further, what follows might help. Read from the comments from the bottom up.
my ($dir) = m{ / # Preceeded by a slash. ([^/]+) # Preceeded by non-slashes, the dir. Captured. / # Preceeded by a slash. [^/]* # Preceeded by non-slashes, the file name. $ # End of string. }x;
Update: Oops! I forgot the parens around $dir. Added.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Regex question
by Roy Johnson (Monsignor) on Aug 19, 2005 at 03:12 UTC | |
by radiantmatrix (Parson) on Aug 19, 2005 at 16:07 UTC | |
by tlm (Prior) on Aug 19, 2005 at 17:45 UTC |