用grepl检查带数字的字符串的格式

问题描述 投票:0回答:2

我想检查一个字符串是否具有这种格式“1234.34”或这种“1234”。 我在 R 中使用 grepl 尝试了以下操作(1 个或多个数字,一个点或后跟更多数字):

grepl("([[:digit:]]+\\.?[[:digit:]]*)", c("1234.34", "1234,34", "1234"))
# [1] TRUE TRUE TRUE

使用 1234.34 或 1234 它工作正常(均为 TRUE)。

如果我测试“1234,34”(带“逗号”),表达式变为 TRUE,但我预期为 FALSE。

r regex grepl
2个回答
2
投票

您可以在正则表达式模式中包含两个选项:仅数字或数字 + 点 + 更多数字。用管道将两个选项分开

|

x <- c("1234.34", "1234,34", "1234")
grepl("^\\d+$|^\\d+\\.\\d+$", x)
#> [1]  TRUE FALSE  TRUE

创建于 2023-03-23 与 reprex v2.0.2


1
投票

只要字符串只包含数字,您就可以执行以下搜索任何不是逗号的内容:

x <- c("1234", "1234.34", "1234,34")
grepl("^[^,]+$", x)

[1]  TRUE TRUE FALSE
© www.soinside.com 2019 - 2024. All rights reserved.