[R] Regexp bug or misunderstanding
Dénes Tóth
toth@dene@ @end|ng |rom kogentum@hu
Mon Jul 2 15:03:47 CEST 2018
Hi Martin,
I assume you want to check whether a particular character string
contains a digit. In this case you should use the following pattern:
"[[:digit:]]" instead of "[:digit:]".
From ?regex:
"A character class is a list of characters enclosed between [ and ]
which matches any single character in that list; unless the first
character of the list is the caret ^, when it matches any character not
in the list. ... Certain named classes of characters are predefined...
For example, [[:alnum:]] means [0-9A-Za-z]"
So if you use simply "[:digit:]" as a pattern, it means: a character
string which contains any of the following characters: ':', 'd', 'i',
'g', 't'. Your second test case contains 'd', whereas the first case
contains neither of the above characters.
HTH,
Denes
On 07/02/2018 02:52 PM, Martin Møller Skarbiniks Pedersen wrote:
> Hi,
>
> Have I found a bug in R? Or misunderstood something about grep() ?
>
> Case 1 gives the expected output
> Case 2 does not gives the expected output.
> I expected integer(0) also for this case.
>
> case 1:
> grep("[:digit:]", "**ABAAbabaabackabaloneaban")
> integer(0)
>
> case 2:
> grep("[:digit:]", "**ABAAbabaabackabaloneaband")
> [1] 1
>
> Regards
> Martin
>
> ______________________________________________
> R-help using 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.
>
More information about the R-help
mailing list