Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 特定数量项的通配符匹配_Regex_R - Fatal编程技术网

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$"