[R] regex sub with specified number of characters

Marc Schwartz marc_schwartz at me.com
Tue Oct 6 16:50:08 CEST 2015


> On Oct 6, 2015, at 9:38 AM, Johannes Radinger <johannesradinger at gmail.com> wrote:
> 
> Hi
> 
> I'd like to remove a leading "3" if my number is 7 digits long, if it is
> only 6 I don't want to anything.
> I think this should be possible with a 1-liner using sub() but I am not
> sure how to define the number of characters following the leading one.
> 
> For example my vector:
> 
> a <- c(3593857,384723,4395843,3398374)
> 
> with sub("^3","",a) I also remove the leading from the second element which
> is only 6 digits long. So how to restrict that using sub? The final result
> should be
> 
> a <- c(593857,384723,4395843,398374)
> 
> Any suggestions?
> 
> Best regards,
> Johannes


Hi,

> gsub("^3([0-9]{6})$", "\\1", a)
[1] "593857"  "384723"  "4395843" "398374" 

or

> sub("^3([0-9]{6})$", "\\1", a)
[1] "593857"  "384723"  "4395843" "398374" 


If the source begins with a 3 followed by 6 digits only from 0 to 9, it will return the 6 digits part of the regex within the parens.

Otherwise, the source is returned unchanged.

See ?regex

Regards,

Marc Schwartz



More information about the R-help mailing list