Thanks, Brian. I had indeed overlooked grepl() (too busy delving into the syntax summary)! That is certainly a useful shortcut of the construction I had used.
Your "Not in general" implies that using grep() twice (in this example; more times in more complex combinations) is inevitable -- which of course was part of the point of the query! A very helpful reply. Thanks! Ted. On 12-Jun-10 12:46:57, Prof Brian Ripley wrote: > I think you have missed grepl(), e.g. > > X[grepl(rex1, X) & !grepl(rex2, X)] > > grepl is a fairly recent addition (2.9.0) that is used extensively in > R's own text-processing operations (e.g. help files, utilities such as > 'R CMD check'). > > On Sat, 12 Jun 2010, ted.hard...@manchester.ac.uk wrote: > >> Greetings, >> The following question has come up in an off-list discussion. >> Is it possible to construct a regular expression 'rex' out of >> two given regular expressions 'rex1' and 'rex2', such that a >> character string X matches 'rex' if and only if X matches 'rex1' >> AND X does not match 'rex2'? > > Not in general. > >> The desired end result can be achieved by logically combining >> the results of a grep using 'rex1' with the results of a grep >> on 'rex2', illustrated by the following example: >> >> ## Given character vector X (below), and two regular exdpressions >> ## rex1="abc", rex2="ijk", to return the elements of X which match >> ## rex1 AND do not match rex1: >> X <- c( >> "abcdefg", # Yes >> "abchijk", # No >> "mnopqrs", # No >> "ijkpqrs", # No >> "abcpqrs" ) # Yes >> rex1 <- "abc" >> rex2 <- "ijk" >> ix1<- grep(rex1,X) >> ix2<- grep(rex2,X) >> X[ix1[!(ix1 %in% ix2)]] >> ## [1] "abcdefg" "abcpqrs" >> >> Question: is there a way to construct 'rex' from 'rex1' and 'rex2' >> such that >> >> X[grep(rex,X)] >> >> would given the same result? >> >> I've not managed to find anything helpful in desciptions of >> regular expression syntax, though one feels it should be possible >> if this is capable of supporting a logically complete language! >> >> With thanks, >> Ted. > > -- > Brian D. Ripley, rip...@stats.ox.ac.uk > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ > University of Oxford, Tel: +44 1865 272861 (self) > 1 South Parks Road, +44 1865 272866 (PA) > Oxford OX1 3TG, UK Fax: +44 1865 272595 > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. -------------------------------------------------------------------- E-Mail: (Ted Harding) <ted.hard...@manchester.ac.uk> Fax-to-email: +44 (0)870 094 0861 Date: 12-Jun-10 Time: 14:14:05 ------------------------------ XFMail ------------------------------ ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.