[英]How to split a string by continuous same letter in R
我有一個像這樣的字符串:
s <- "aaehhhhhhhaannd"
如何用R將字符串拆分為以下格式?
c("aa", "e", "hhhhhhh", "aa","nn","d")
您可以使用str_extract_all
和regex (.)\\\\1*
,它使用反向引用來匹配重復字符:
library(stringr)
str_extract_all("aaehhhhhhhaannd", "(.)\\1*")
#[[1]]
#[1] "aa" "e" "hhhhhhh" "aa" "nn" "d"
你可以使用一個基礎R strsplit
與基於PCRE正則表達式lookarounds 。
s <- "aaehhhhhhhaannd"
strsplit(s, "(?<=(.))(?!\\1)", perl=TRUE)
# [[1]]
# [1] "aa" "e" "hhhhhhh" "aa" "nn" "d"
正則表達式詳細信息 :
(?<=(.))
- 一個積極的lookbehind( (?<=...)
)“看起來”離開並使用(.)
捕獲組 將任何char 捕獲到組1中(此值可以從借助於\\1
反向引用的模式 ) (?!\\\\1)
- 如果與當前位置右側的第1組中捕獲的值相同,則會導致匹配失敗的負向前瞻。 由於外觀不消耗文本,因此拆分發生在不同字符之間的位置。
注意:如果你想.
匹配一個換行符,也加(?s)
在模式的開始(如PCRE正則表達式, .
默認情況下不匹配換行符)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.