正则表达式替换“。”到 ”_”
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 <- "..A.B..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 在两端点 trim 点。点表示任何字符,因此我们必须用反斜杠将其转义以删除该含义。然后使用 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")
我对字符串中的字符替换有一个具体问题:
如果我有以下字符串
"..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 <- "..A.B..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 在两端点 trim 点。点表示任何字符,因此我们必须用反斜杠将其转义以删除该含义。然后使用 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")