簡體   English   中英

正則表達式替換“。” 至 ”_”

[英]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。

提前致謝!

使用來自奇妙的stringrtidyverse

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.

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