簡體   English   中英

正則表達式不在字母數字之間

[英]regular expression not between alphanumeric

我想在文本(實際上是R代碼)中標識字符串“ mystring”,但要確保它是一個變量名:

  • 它不應是更長的變量(例如“ thisismystring”或“ mystringisnice”)的一部分。 我猜這可以通過在“ mystring”之前和之后排除(?!([[[:alnum:]]){1})來完成。
  • 但是它可以在一行的開頭(例如“ \\ nmystring”),因此我們必須注意這種異常類型

最好的方法是什么?

編輯:單元測試

pattern = "\\bmystring\\b"
identical(grepl(pattern = pattern, 
            x = c("thisismystring","mystringisnice","\nmystring", "mystring", "mystring=", "mystring(", " mystring","mystring\n", "6mystring", "mystring0", "= mystring(", "=mystring", 
"hop
mystring")),
      c(FALSE,          FALSE,           TRUE,         TRUE,        TRUE,        TRUE,         TRUE,       TRUE,        FALSE, FALSE,       TRUE,          TRUE,    TRUE))

只需使用\\b (單詞邊界)令牌即可:

\\bmystring\\b

單元測試

pattern = "\\bmystring\\b"
`==`(grepl(pattern = pattern, 
                x = c("thisismystring","mystringisnice","\nmystring", "mystring", "mystring=", "mystring(", " mystring","mystring\n", "6mystring", "mystring0", "= mystring(", "=mystring", 
                      "hop
                      mystring")),
          c(FALSE,          FALSE,           TRUE,         TRUE,        TRUE,        TRUE,         TRUE,       TRUE,        FALSE, FALSE,       TRUE,          TRUE,    TRUE))
# [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM