R grepl:组合条件

R grepl:组合条件,r,grepl,R,Grepl,我是R的新手,我必须检查字符串是否只包含数字、和空格符号。 我的代码版本是: grepl("\\d+.", x) 但它不起作用。我需要以下结果: str <- "0. 365" str1 <- "S12" grepl("\\d+.", str) #True grepl("\\d+.", str1) #False str试试这个 str您说要检查“如果字符串只包含数字,和空格符号

我是R的新手,我必须检查字符串是否只包含数字、
和空格符号。 我的代码版本是:

grepl("\\d+.", x)
但它不起作用。我需要以下结果:

str <- "0. 365" 
str1 <- "S12"

grepl("\\d+.", str) #True
grepl("\\d+.", str1) #False
str试试这个

str您说要检查“如果字符串只包含数字,
和空格符号”。您没有提到这些字符类型的显示顺序。我认为您要查找的顺序是固定的:第一个数字,然后是句号,然后是空格(根据您接受@Rui的答案这一事实判断,该答案适用于固定顺序)。但是,如果顺序是可变的而不是固定的,则此正则表达式可以工作:

数据:


这是通过断言(i)存在空白字符,(ii)存在数字,以及(iii)存在句点来实现的,并且只允许三个字符出现在字符串
^
的开头和字符串
$
的结尾之间。(对于类似的情况,请参见)

您还必须转义句点。不需要在
[]
中转义
,事实上,您所拥有的内容将匹配一个文本“\”
str <- c("0. 365", "S12")
grepl("^[ \\.[:digit:]]*$", str)
#[1]  TRUE FALSE
str <- c("0. 365", ".0&0 ", "abc.12 .2", "000. ", "123", "ab.c")
grepl("^(?=.*\\s)(?=.*\\d)(?=.*\\.)[\\s\\d\\.]+$", str, perl = T)
[1]  TRUE FALSE FALSE  TRUE FALSE FALSE