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

e1xvtsh3  于 2023-03-24  发布在  其他
关注(0)|答案(2)|浏览(136)

我想检查一个字符串的格式是“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。

vbkedwbf

vbkedwbf1#

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

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

创建于2023-03-23带有reprex v2.0.2

6jjcrrmo

6jjcrrmo2#

只要字符串只包含数字,您就可以执行以下操作来搜索除逗号以外的任何内容:

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

[1]  TRUE TRUE FALSE

相关问题