簡體   English   中英

如何在R中用連續的相同字母分割字符串

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

在線查看R演示正則表達式演示

正則表達式詳細信息

  • (?<=(.)) - 一個積極的lookbehind( (?<=...) )“看起來”離開並使用(.) 捕獲組 任何char 捕獲到組1中(此值可以從借助於\\1 反向引用的模式
  • (?!\\\\1) - 如果與當前位置右側的第1組中捕獲的值相同,則會導致匹配失敗的負向前瞻。

由於外觀不消耗文本,因此拆分發生在不同字符之間的位置。

注意:如果你想. 匹配一個換行符,也加(?s)在模式的開始(如PCRE正則表達式, .默認情況下不匹配換行符)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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