R 正则表达式:通过 \\n [A-z] 和 [: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")
及其与 [A-z]
和 [: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 位数字。由于 (?=...)
是一个积极的前瞻(一个零宽度断言,不会将匹配的字符放入匹配值中),因此不会从结果中删除与其匹配的文本。
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"
我有一个数据框,其中的字符串如下所示:
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")
及其与 [A-z]
和 [: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 位数字。由于(?=...)
是一个积极的前瞻(一个零宽度断言,不会将匹配的字符放入匹配值中),因此不会从结果中删除与其匹配的文本。
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"