比如這個長度3個或更多的每一個字相匹配,並與xx
替代它:如何在給定長度以上修整字符串中的所有單詞?
library(stringr)
str_replace_all(c("This is a long", "Another one."), "([a-zA-Z]{3,})", "xx")
#output: "xx is a xx" "xx xx"
我希望得到的是:
#"Thi is a lon" "Ano one."
比如這個長度3個或更多的每一個字相匹配,並與xx
替代它:如何在給定長度以上修整字符串中的所有單詞?
library(stringr)
str_replace_all(c("This is a long", "Another one."), "([a-zA-Z]{3,})", "xx")
#output: "xx is a xx" "xx xx"
我希望得到的是:
#"Thi is a lon" "Ano one."
您可以使用下面的匹配:
([a-zA-Z]{3})[a-zA-Z]+
而且隨着\\1
您還可以使用gsub
(從評論)
gsub("([a-zA-Z]{3})[a-zA-Z]+", "\\1", c("This is a long", "Another one."))
使用R將是'gsub(「([a-zA-Z] {3})[a-zA-Z] +」,「\\ 1」,c(「This is一個長「,」另一個。「))' –
@DavidArenburg是的..我差點更新..謝謝:) –
非正則表達式的解決方案也可能是'sapply(strsplit(C( 「這是一個漫長的」, 「一個又一個。」),'「),函數(x)粘貼(strtrim(x,3),collapse =「」))',但你將失去標點符號。 –
or lookaround approach would'gsub(「(?<= [A-Za-z] {3})[A-Za-z] +」,c(「This is a long」,「另一個」。 ),perl = TRUE)' – akrun