Complete word matching using grepl in R

前端 未结 3 1657

Consider the following example:

> testLines <- c(\"I don\'t want to match this\",\"This is what I want to match\")
> grepl(\'is\',testLines)
> [         


        
相关标签:
3条回答
  • 2020-11-29 08:45

    you need double-escaping to pass escape to regex:

    > grepl("\\bis\\b",testLines)
    [1] FALSE  TRUE
    
    0 讨论(0)
  • 2020-11-29 08:57

    "\<" is another escape sequence for the beginning of a word, and "\>" is the end. In R strings you need to double the backslashes, so:

    > grepl("\\<is\\>", c("this", "who is it?", "is it?", "it is!", "iso"))
    [1] FALSE  TRUE  TRUE  TRUE FALSE
    

    Note that this matches "is!" but not "iso".

    0 讨论(0)
  • 2020-11-29 08:59

    Very simplistically, match on a leading space:

    testLines <- c("I don't want to match this","This is what I want to match")
    grepl(' is',testLines)
    [1] FALSE  TRUE
    

    There's a whole lot more than this to regular expressions, but essentially the pattern needs to be more specific. What you will need in more general cases is a huge topic. See ?regex

    Other possibilities that will work for this example:

    grepl(' is ',testLines)
    [1] FALSE  TRUE
    grepl('\\sis',testLines)
    [1] FALSE  TRUE
    grepl('\\sis\\s',testLines)
    [1] FALSE  TRUE
    
    0 讨论(0)
提交回复
热议问题