[英]regex substitution "." to "_"
我對字符串中的字符替換有一個特定的問題:
如果我有以下字符串
"..A.B....c...A..D.."
"A..S.E.Q.......AW.."
".B.C..a...R......Ds"
我應該使用哪個正則表達式替換來替換點並獲取以下字符串:
"A_B_c_A_D"
"A_S_E_Q_AW"
"B_C_a_R_Ds"
我正在使用 R。
提前致謝!
使用來自奇妙的stringr
的tidyverse
。
str1 <- "..AB...c...A..D.."
str1 %>%
#replace all dots that follow any word character ('\\.' escapes search, '+' matches one or more, '(?<=\\w)' followed by logic)
str_replace_all('(?<=\\w)\\.+(?=\\w)', '_') %>%
#delete remaining dots (i.e. at the start)
str_remove_all('\\.')
和往常一樣,用正則表達式給貓剝皮的方法有很多
這里使用 gsub 的解決方案分為兩部分
string = c("..A.B....c...A..D..","A..S.E.Q.......AW..",".B.C..a...R......Ds")
首先刪除起點和終點
string2 = gsub("^\\.+|\\.+$", "", string)
最后用_替換一個或多個點
string2 = gsub("\\.+", "_", string2)
使用末尾注釋中顯示的 x,使用 trimws 修剪兩端的點。 點表示任何字符,因此我們必須用反斜杠對其進行轉義以刪除該含義。 然后使用chartr將每個點替換為下划線。 不使用任何包。
x |> trimws("both", "\\.") |> chartr(old = ".", new = "_")
## [1] "A_B____c___A__D" "A__S_E_Q_______AW" "B_C__a___R______Ds"
x <- c("..A.B....c...A..D..",
"A..S.E.Q.......AW..",
".B.C..a...R......Ds")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.