Regex 特定数量项的通配符匹配
假设我有一个字符串,正在搜索特定的通配符。例如:Regex 特定数量项的通配符匹配,regex,r,Regex,R,假设我有一个字符串,正在搜索特定的通配符。例如: x <- "AJSDKLAFJASFJABJKADL" z <- stri_locate_all_regex(x, 'A*****AF') x在正则表达式中(与您可能使用的标准通配符相反),*表示“0个或多个前导字符”,因此“A*”表示“0个或多个A”。您不能像“****”那样堆叠它们,因为您需要“.”表示“一个字符” z在正则表达式中(与您可能使用的标准通配符相反),*表示“0个或多个前导字符”,因此“A*”表示“0个或多个A”。
x <- "AJSDKLAFJASFJABJKADL"
z <- stri_locate_all_regex(x, 'A*****AF')
x在正则表达式中(与您可能使用的标准通配符相反),*
表示“0个或多个前导字符”,因此“A*”表示“0个或多个A”。您不能像“****”那样堆叠它们,因为您需要“.”表示“一个字符”
z在正则表达式中(与您可能使用的标准通配符相反),*
表示“0个或多个前导字符”,因此“A*”表示“0个或多个A”。您不能像“****”那样堆叠它们,因为您需要“.”表示“一个字符”
z对于一种简单的方法来说,我假设您的意思是,您想使用问题中的通配符,您可以使用glob2rx()
将它们转换为适当的正则表达式。“通配符”表达式,也称为“”,是一种穷人的正则表达式(?regex
)。对于表达式,可以指定五个?
字符,因为在glob中,?
表示任何单个字符
x <- c("ABCDEFAF", "XABCDEFAFX", "abcdeaf", "A55555AF", "A666666AF")
# the (simpler?) "wildcard" way
stringi::stri_detect_regex(x, glob2rx("A?????AF"))
## [1] TRUE FALSE FALSE TRUE FALSE
# the regular expression way (probably WRONG)
stringi::stri_detect_regex(x, "A.{5}AF")
## [1] TRUE TRUE FALSE TRUE FALSE
# the regular expression way (CORRECT)
stringi::stri_detect_regex(x, "^A.{5}AF$")
## [1] TRUE FALSE FALSE TRUE FALSE
对于一种简单的方法,我假设你的意思是你想使用通配符,就像问题中的一样,你可以使用glob2rx()
将它们转换成适当的正则表达式。“通配符”表达式,也称为“”,是一种穷人的正则表达式(?regex
)。对于表达式,可以指定五个?
字符,因为在glob中,?
表示任何单个字符
x <- c("ABCDEFAF", "XABCDEFAFX", "abcdeaf", "A55555AF", "A666666AF")
# the (simpler?) "wildcard" way
stringi::stri_detect_regex(x, glob2rx("A?????AF"))
## [1] TRUE FALSE FALSE TRUE FALSE
# the regular expression way (probably WRONG)
stringi::stri_detect_regex(x, "A.{5}AF")
## [1] TRUE TRUE FALSE TRUE FALSE
# the regular expression way (CORRECT)
stringi::stri_detect_regex(x, "^A.{5}AF$")
## [1] TRUE FALSE FALSE TRUE FALSE
简明扼要地说,'A.{5}AF'
,简明扼要地说,'A.{5}AF'
> glob2rx("A?????AF")
[1] "^A.....AF$"