首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R grepl:合并条件

R grepl:合并条件
EN

Stack Overflow用户
提问于 2020-10-18 11:52:51
回答 2查看 204关注 0票数 2

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

代码语言:javascript
复制
grepl("\\d+.", x)

但不起作用。我需要以下结果:

代码语言:javascript
复制
str <- "0. 365" 
str1 <- "S12"

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

如何正确组合grepl的条件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-18 11:58:29

试试这个regex

代码语言:javascript
复制
str <- c("0. 365", "S12")
grepl("^[ \\.[:digit:]]*$", str)
#[1]  TRUE FALSE
票数 1
EN

Stack Overflow用户

发布于 2020-10-18 21:06:39

您说要检查“如果字符串只包含数字、.和空格符号”。您没有提到,这些字符类型应该以什么顺序出现。我认为你要寻找的顺序是固定的:第一个数字,然后是周期,然后是空格(根据你接受了@Rui的答案,这个答案适用于固定的顺序)。但是,如果顺序是可变的,而不是固定的,那么这个正则表达式就能工作:

数据:

代码语言:javascript
复制
str <- c("0. 365", ".0&0 ", "abc.12 .2", "000. ", "123", "ab.c")

解决方案:

代码语言:javascript
复制
grepl("^(?=.*\\s)(?=.*\\d)(?=.*\\.)[\\s\\d\\.]+$", str, perl = T)
[1]  TRUE FALSE FALSE  TRUE FALSE FALSE

这是通过断言(i)一个空白字符存在,(ii)一个数字存在,(iii)一个句点存在,并且只允许三个字符出现在字符串^的开始和字符串$的结束之间。(类似的情况见如何匹配只包含任意顺序和任何数字的字符集的字符串?)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64412964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档