R grepl:组合条件
R grepl: combine conditions
我是 R 的新手,我必须检查字符串是否仅包含数字、.
和 space 符号。
我的代码版本是:
grepl("\d+.", x)
但是没用。我需要以下结果:
str <- "0. 365"
str1 <- "S12"
grepl("\d+.", str) #True
grepl("\d+.", str1) #False
如何正确组合 grepl
的条件?
试试这个 regex。
str <- c("0. 365", "S12")
grepl("^[ \.[:digit:]]*$", str)
#[1] TRUE FALSE
你说你想检查“如果字符串只包含数字、.
和 space 符号”。您没有提到 这些字符类型应该以何种顺序出现。我认为您要查找的顺序是固定的:第一个数字,然后是句点,然后是 space (根据您已经接受@Rui 的答案来判断,这适用于固定顺序)。但是,如果顺序是可变的而不是固定的,那么这个正则表达式就可以工作:
数据:
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
这是通过断言 (i) 一个白色 space 字符存在,(ii) 一个数字存在,以及 (iii) 一个句点存在,并且只允许三个字符出现在字符串 ^
和字符串结尾 $
。 (有关类似案例,请参阅 )
我是 R 的新手,我必须检查字符串是否仅包含数字、.
和 space 符号。
我的代码版本是:
grepl("\d+.", x)
但是没用。我需要以下结果:
str <- "0. 365"
str1 <- "S12"
grepl("\d+.", str) #True
grepl("\d+.", str1) #False
如何正确组合 grepl
的条件?
试试这个 regex。
str <- c("0. 365", "S12")
grepl("^[ \.[:digit:]]*$", str)
#[1] TRUE FALSE
你说你想检查“如果字符串只包含数字、.
和 space 符号”。您没有提到 这些字符类型应该以何种顺序出现。我认为您要查找的顺序是固定的:第一个数字,然后是句点,然后是 space (根据您已经接受@Rui 的答案来判断,这适用于固定顺序)。但是,如果顺序是可变的而不是固定的,那么这个正则表达式就可以工作:
数据:
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
这是通过断言 (i) 一个白色 space 字符存在,(ii) 一个数字存在,以及 (iii) 一个句点存在,并且只允许三个字符出现在字符串 ^
和字符串结尾 $
。 (有关类似案例,请参阅