如何解决R grepl:结合条件
我是R语言的新手,我必须检查字符串是否仅包含数字,.
和空格符号。
我的代码版本是:
grepl("\\d+.",x)
但是它不起作用。我需要以下结果:
str <- "0. 365"
str1 <- "S12"
grepl("\\d+.",str) #True
grepl("\\d+.",str1) #False
如何正确合并grepl
的条件?
解决方法
您说要检查“字符串是否仅包含数字,.
和空格符号”。您没有提及应以哪种顺序出现这些字符类型。我认为您要查找的顺序是固定的:第一个数字,然后是句点,然后是空格(根据您是否已接受@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)一个句点,并且仅允许在字符串^
的开始之间出现三个字符来起作用的和字符串$
的结尾。 (对于类似的情况,请参见How to match strings that only contain a character set in any order and any numbers?)
尝试这个regex。
str <- c("0. 365","S12")
grepl("^[ \\.[:digit:]]*$",str)
#[1] TRUE FALSE
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。