[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