簡體   English   中英

R正則表達式:通過\\\\ n [Az]和[:punct:]的組合來分割字符串

[英]R regex: split a string by combination of \\n [A-z] & [:punct:]

我有一個帶有如下字符串的數據框:

bla bla.\n14:39:51 info: pyku bla .\n14:39:51 info: \n14:39:51 info: \n14:39:57 Sam: <span>pyk pyk</span>\n14:43:15 on and on \n14:43:59 you get an idea

我想將由\\n(number):(number):(number)序列分隔的行拆分為不同的行。 我試過了

stringr::separate_rows(df3$Transcript[1], Transcript , sep = "\\n")

以及與[Az][:punct:]不同組合均無濟於事。 最直接的方法是什么?

謝謝

您想用換行符分割字符串,然后再加上時間戳。 您可以基於正向前瞻將基數R strsplit函數與PCRE正則表達式一起使用:

strsplit(s, "\\R+(?=\\d{2}:\\d{2}:\\d{2})", perl=TRUE)

正則表達式演示

圖案細節

  • \\R+ -1個或多個換行符序列( \\n\\r\\r\\n
  • (?=\\d{2}:\\d{2}:\\d{2}) -后跟2位數字: ,2位數字:和2位數字。 由於(?=...)是一個正向超前(零寬度斷言,不會將匹配的字符放入匹配值),因此與之匹配的文本不會從結果中刪除。

R演示

s <- "bla bla.\n14:39:51 info: pyku bla .\n14:39:51 info: \n14:39:51 info: \n14:39:57 Sam: <span>pyk pyk</span>\n14:43:15 on and on \n14:43:59 you get an idea"
strsplit(s, "\\R+(?=\\d{2}:\\d{2}:\\d{2})", perl=TRUE)

輸出:

[[1]]
[1] "bla bla."                           "14:39:51 info: pyku bla ."         
[3] "14:39:51 info: "                    "14:39:51 info: "                   
[5] "14:39:57 Sam: <span>pyk pyk</span>" "14:43:15 on and on "               
[7] "14:43:59 you get an idea"          

暫無
暫無

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

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