[英]Quantifier {n,m} The preceding item is matched at least n times, but not more than m times not working in R
我的代碼是
strings <- c("a","aa","aaa", "aaaa-EA","aaaaaa-EA")
pattern = "a{2,4}-EA$"
grepl(pattern,strings,perl=TRUE)
輸出為: FALSE FALSE FALSE TRUE TRUE
是是
理想情況下,我應該得到FALSE FALSE FALSE TRUE FALSE
您需要添加^
以指示字符串的開頭:
> pattern <- "^a{2,4}-EA$"
> grepl(pattern, strings)
[1] FALSE FALSE FALSE TRUE FALSE
否則,模式匹配與位置無關。
正如Sven指出的那樣,帶有5 a的字符串具有一個帶有4 a的子字符串,當您不指定字符串的開頭時,該子字符串可以匹配。
或者,您可以在斷言后面使用否定性外觀,以確保最多僅匹配4個:
grepl("(?<!a)a{2,4}-EA$",strings,perl=TRUE)
[1] FALSE FALSE FALSE TRUE FALSE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.