我有一個數字串列示例:
888*
8*
8.88*
88.88*
88888.888*
899900
8.89
0.08
80
89899
50
32
30.8
0.081
0.8
8.1
我只想匹配那些只有 8 的。我為我只想要的那些打了一個星號,其他的應該被忽略。
我試過這個,但只能得到我想要的部分。
num <- c(888,
8,
8.88,
88.88,
88888.888,
899900,
8.89,
0.08,
80,
89899,
50,
32,
30.8,
0.081,
0.8,
8.1)
grepl('^8 [^\\.]*[^0-7|9]*', num)
uj5u.com熱心網友回復:
怎么樣:
grep("^[8.] $", num, value = TRUE)
# "888" "8" "8.88" "88.88" "88888.888"
uj5u.com熱心網友回復:
假設 L 與最后的注釋中的一樣,請嘗試其中的任何一個。如果 L 是數字,它們也都有效。
# there cannot be anything other than 8 and dot
!grepl("[^8.]", L)
## [1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE
# if we remove 8's and dot's there should be nothing left
nchar(gsub("[8.]", "", L)) == 0
## [1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE
# trim off all 8's and dots and nothing should be left
!nzchar(trimws(L, whitespace = "[8.]"))
## [1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE
筆記
L <- c("888", "8", "8.88", "88.88", "88888.888", "899900", "8.89",
"0.08", "80", "89899", "50", "32", "30.8", "0.081", "0.8", "8.1"
)
uj5u.com熱心網友回復:
嘗試
grep("^8 ([.]8 )?$", as.character(num), value = TRUE)
[1] "888" "8" "8.88" "88.88" "88888.888"
uj5u.com熱心網友回復:
也許這對你有用。搜索一個或多個8s,然后是零個或多個,.最后是零個或多個尾隨8s。
grep("^8 \\.*8*$", as.character(num), value=T)
[1] "888" "8" "8.88" "88.88" "88888.888"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/530801.html
標籤:r正则表达式弦乐弦乐
