Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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
R中只检测前六个数字的正则表达式函数?_R_Regex - Fatal编程技术网

R中只检测前六个数字的正则表达式函数?

R中只检测前六个数字的正则表达式函数?,r,regex,R,Regex,我需要找到必须在R中实现的正则表达式,以检测此测试用例中的前六个数字并输出TRUE/FALSE test_case = c('401 501', '401-501', '(401)501', '401501', '+401501', '4011501') 我尝试过这个函数: str_detect(test_case, regex('^[- + \\d]{6}')) 但我不能让输出显示为这样: TRUE TRUE TRUE TRUE FALSE FALSE 您可以删除数据中允许的其他字符,然

我需要找到必须在R中实现的正则表达式,以检测此测试用例中的前六个数字并输出TRUE/FALSE

test_case = c('401 501', '401-501', '(401)501', '401501', '+401501', '4011501')
我尝试过这个函数:

str_detect(test_case, regex('^[- + \\d]{6}'))
但我不能让输出显示为这样:

TRUE TRUE TRUE TRUE FALSE FALSE

您可以删除数据中允许的其他字符,然后检查向量是否正好有6位数字

grepl('^\\d{6}$', gsub('[() -]', '', test_case))
#[1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE
stringr
中实现相同的逻辑:

library(stringr)
str_detect(str_remove_all(test_case, '[() -]'), '^\\d{6}$')
这似乎可以做到:

grepl('^[-\\(\\) ]*[[:digit:]]{3}[-\\(\\) ]*[[:digit:]]{3}$', test_case)
#[1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE

比赛的规则不是很清楚。在第五个示例(+401501)中,是否应返回false,因为它的前缀为+?第六个例子是因为它有7个数字,而不是6个?