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@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.


______________________________________________
R-help@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.

Reply via email to