regex pattern assistance
On Aug 15, 2014, at 11:56 AM, Tom Wright <tom at maladmin.com> wrote:
WOW!!! What can I say 4 answers in less than 4 minutes. Thank you everyone. If I can't make it work now I don't deserve to. btw. the strsplit approach wouldn't work for me as: a) I wanted to play with regex and b) the location isn't consistent.
Tom, If not in the same relative position, is the substring pattern always the same? That is 3 characters, a hyphen, then 3 characters? If so, would any other part of the path follow the same pattern or is it unique? If the pattern is the same and is unique in the path:
gsub(".*([[:alnum:]]{3}-[[:alnum:]]{3}).*", "\\1", x)
[1] "S01-012" is another possible alternative and more flexible: y <- "/mnt/AO/AO Data/Another Level/Yet Another Level/S01-012/120824/"
gsub(".*([[:alnum:]]{3}-[[:alnum:]]{3}).*", "\\1", y)
[1] "S01-012" z <- "/mnt/AO/AO Data/Another Level/Yet Another Level/S01-012/One More Level/120824/"
gsub(".*([[:alnum:]]{3}-[[:alnum:]]{3}).*", "\\1", z)
[1] "S01-012"
Nice to see email support still works, not everything has moved to linkedin and stackoverflow.
Stackoverflow? ;-) Regards, Marc
Thanks again, Tom On Fri, 2014-08-15 at 12:18 -0400, Tom Wright wrote:
Hi, Can anyone please assist. given the string
x<-"/mnt/AO/AO Data/S01-012/120824/"
I would like to extract "S01-012" require(stringr)
str_match(x,"\\/mnt\\/AO\\/AO Data\\/(.+)\\/+") str_match(x,"\\/mnt\\/AO\\/AO Data\\/(\\w+)\\/+")
both nearly work. I expected I would use something like:
str_match(x,"\\/mnt\\/AO\\/AO Data\\/([\\w -]+)\\/+")
but I don't seem able to get the square bracket grouping to work correctly. Can someone please show me where I am going wrong? Thanks, Tom