[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