在特定模式(数字或文本)之前的位置用 stringr::str_split 拆分文本
Split text with stringr::str_split in location preceding specific pattern (numeral or text)
假设我有 table 个字符串:
df <-tibble::tribble(
~ alternatives,
" 23.32 | x232 code | This is a description| 43.11 | a341 code | some other description | optimised | v333 code | still another description" )
我想在数值前面的位置拆分字符串:例如。 23.32 之前,43.11 之前,以及“优化”一词之前。
我希望在每个单元格中实现向量:
c(23.32 | x232 code | This is a description|, 43.11 | a341 code | some other description |, optimised | v333 code | still another description)
在特定模式之前实现拆分的正则表达式模式应该是什么?有关模式之间的管道字符数可能不同,我不能可靠地使用它们。我隐约知道前瞻等。这段代码不会 return 我所期望的,但我相信我正在寻找类似的解决方案(这不会做我想要的):
df2 <-
df %>%
mutate(alternatives =
str_split(alternatives,
pattern = "(?<=[a-zA-Z])\s*(?=[0-9])"))
enter code here
解决方案是什么?
您可以尝试按照以下正则表达式模式拆分:
(?<=\S)\s+(?=(?:\d+\.\d+|optimised)\b)
更新脚本:
df2 <- df %>%
mutate(alternatives =
str_split(alternatives,
pattern = "(?<=\S)\s+(?=(?:\d+\.\d+|optimised)\b)"))
假设我有 table 个字符串:
df <-tibble::tribble(
~ alternatives,
" 23.32 | x232 code | This is a description| 43.11 | a341 code | some other description | optimised | v333 code | still another description" )
我想在数值前面的位置拆分字符串:例如。 23.32 之前,43.11 之前,以及“优化”一词之前。
我希望在每个单元格中实现向量:
c(23.32 | x232 code | This is a description|, 43.11 | a341 code | some other description |, optimised | v333 code | still another description)
在特定模式之前实现拆分的正则表达式模式应该是什么?有关模式之间的管道字符数可能不同,我不能可靠地使用它们。我隐约知道前瞻等。这段代码不会 return 我所期望的,但我相信我正在寻找类似的解决方案(这不会做我想要的):
df2 <-
df %>%
mutate(alternatives =
str_split(alternatives,
pattern = "(?<=[a-zA-Z])\s*(?=[0-9])"))
enter code here
解决方案是什么?
您可以尝试按照以下正则表达式模式拆分:
(?<=\S)\s+(?=(?:\d+\.\d+|optimised)\b)
更新脚本:
df2 <- df %>%
mutate(alternatives =
str_split(alternatives,
pattern = "(?<=\S)\s+(?=(?:\d+\.\d+|optimised)\b)"))