簡體   English   中英

正則表達式失敗與美元符號

[英]regex fails with dollar sign

在R中,我試圖匹配文件名向量中的一系列字符串。 我只希望沒有字母的人以.tif結尾

allfiles <- c("181129_16_00_class_mlc.tif", "181129_16_00.tif.aux.xml", "181129_17_00_01_19.tif", "181129_17_00_01_20.tif", "181129_17_00_01_23.tif", "181129_17_00_01_24.tif", "181129_17_00_01_25.tif", "181129_17_00_01_26.tif", "181129_17_00_01_27.tif", "181129_17_00_01_28.tif", "181129_17_00_01_29.tif", "181129_17_00_01_30.tif")

 grepl("^[0-9_]+[.tif]", allfiles)
 grepl("^[0-9_]+[.tif]$", allfiles)

返回:

[1] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

為什么美元符號失敗? 我從第二個grepl得到的結果是:

[1] FALSE FALSE TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE

這不是$什么失敗,但使用括號。 相反,你想要

grepl("^[0-9_]+\\.tif$", allfiles)
# [1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE

同時, ^[0-9_]+[.tif]$表示在所有數字和/或_之后,最后你只有t,i,f或。 也就是說,只有其中一個。 例如,

grepl("^[0-9_]+[.tif]$", "1234t")
# [1] TRUE
grepl("^[0-9_]+[.tif]$", "1234tt")
# [1] FALSE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM