我不明白为什么grepl("see*", "file SEC", ignore.case = TRUE)返回TRUE?我试图找到所有以see开头的单词,如See,seeing,seen等,并删除它们。“file SEC”上面的字符串没有这样的单词,但返回TRUE。
grepl("see*", "file SEC", ignore.case = TRUE)
TRUE
see
See
seeing
seen
5jvtdoz21#
使用单词边界(\\b)
\\b
模式"see*"检查“se”后跟任意数量的"e" s(e*)(包括零),因此“SE”匹配。我相信你可能想看看这样的东西,没有“*”
"see*"
"e"
e*
grepl("^see", "file SEC", ignore.case = TRUE) FALSE
字符串除了“^”符号之外,您还可以包含一个单词边界\\b,这样您就可以检测到以该模式开头的单词,但排除那些不以该模式开头的单词。
grepl("\\bSee", c("file SEC", "See", "seeing", "seen", "he was seen", "He did not forsee the event"), ignore.case = TRUE) [1] FALSE TRUE TRUE TRUE TRUE FALSE
型
kgqe7b3p2#
其他人提到的问题是,问题是指定glob而不是regular expression,或者从不同的Angular 来看,它指定了错误的正则表达式。我们可以通过使用startsWith来避免正则表达式和globs,并且只使用固定的字符串。startsWith测试字符串是否以固定的潜在子串开始。它不支持大小写不敏感,但我们可以使用tolower来获得。
startsWith
tolower
startsWith(tolower(c("file SEC", "seer", "a seer")), "see") ## [1] FALSE TRUE FALSE
字符串
jckbn6z73#
try grepl(“^see”,“file SEC”)“^see”表示“所有以see开头的字符串”
3条答案
按热度按时间5jvtdoz21#
使用单词边界(
\\b
)模式
"see*"
检查“se”后跟任意数量的"e"
s(e*
)(包括零),因此“SE”匹配。我相信你可能想看看这样的东西,没有“*”
字符串
除了“^”符号之外,您还可以包含一个单词边界
\\b
,这样您就可以检测到以该模式开头的单词,但排除那些不以该模式开头的单词。型
kgqe7b3p2#
其他人提到的问题是,问题是指定glob而不是regular expression,或者从不同的Angular 来看,它指定了错误的正则表达式。
我们可以通过使用
startsWith
来避免正则表达式和globs,并且只使用固定的字符串。startsWith
测试字符串是否以固定的潜在子串开始。它不支持大小写不敏感,但我们可以使用tolower
来获得。字符串
jckbn6z73#
try grepl(“^see”,“file SEC”)“^see”表示“所有以see开头的字符串”