reg expr that retains only bracketed text from strings
strcapture() can help here.
mystrings<-c("ABC","A(B)C","AB(C)")
strcapture("^[^{]*(\\([^(]*\\)).*$", mystrings,
proto=data.frame(InParen="")) InParen 1 <NA> 2 (B) 3 (C) Classic regular expressions don't do so well with nested parentheses. Perhaps a perl-style RE could do that.
strcapture("^[^{]*(\\([^(]*\\)).*$", proto=data.frame(InParen=""),
x=c("()", "a(s(d)f)g"))
InParen
1 ()
2 (d)f)
Bill Dunlap
TIBCO Software
wdunlap tibco.com
On Tue, Jun 11, 2019 at 10:46 PM nevil amos <nevil.amos at gmail.com> wrote:
Hi
I am trying to extract only the text contained in brackets from a vector of
strings
not all of the strings contain closed bracketed text, they should return an
empty string or NA
this is what I have at the moment
mystrings<-c("ABC","A(B)C","AB(C)")
substring(mystrings, regexpr("\\(|\\)", mystrings))
#this returns the whole string if there are no brackets.
[1] "ABC" "(B)C" "(C)"
# my desired desired output:
# [1] "" "(B)" "(C)"
many thanks for any suggestions
Nevil Amos
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.