我是R中的新手,我必须检查字符串是否只包含数字、.和空格符号。我的代码版本是:
grepl("\\d+.", x)但不起作用。我需要以下结果:
str <- "0. 365"
str1 <- "S12"
grepl("\\d+.", str) #True
grepl("\\d+.", str1) #False如何正确组合grepl的条件?
发布于 2020-10-18 11:58:29
试试这个regex。
str <- c("0. 365", "S12")
grepl("^[ \\.[:digit:]]*$", str)
#[1] TRUE FALSE发布于 2020-10-18 21:06:39
您说要检查“如果字符串只包含数字、.和空格符号”。您没有提到,这些字符类型应该以什么顺序出现。我认为你要寻找的顺序是固定的:第一个数字,然后是周期,然后是空格(根据你接受了@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)一个空白字符存在,(ii)一个数字存在,(iii)一个句点存在,并且只允许三个字符出现在字符串^的开始和字符串$的结束之间。(类似的情况见如何匹配只包含任意顺序和任何数字的字符集的字符串?)
https://stackoverflow.com/questions/64412964
复制相似问题