我想检查一个字符串是否具有这种格式“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。
您可以在正则表达式模式中包含两个选项:仅数字或数字 + 点 + 更多数字。用管道将两个选项分开
|
:
x <- c("1234.34", "1234,34", "1234")
grepl("^\\d+$|^\\d+\\.\\d+$", x)
#> [1] TRUE FALSE TRUE
创建于 2023-03-23 与 reprex v2.0.2
只要字符串只包含数字,您就可以执行以下搜索任何不是逗号的内容:
x <- c("1234", "1234.34", "1234,34")
grepl("^[^,]+$", x)
[1] TRUE TRUE FALSE