Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在特定图案(数字或文本)前面的位置使用stringr::str_拆分文本_R_Regex_Regex Lookarounds_Stringr_Strsplit - Fatal编程技术网

在特定图案(数字或文本)前面的位置使用stringr::str_拆分文本

在特定图案(数字或文本)前面的位置使用stringr::str_拆分文本,r,regex,regex-lookarounds,stringr,strsplit,R,Regex,Regex Lookarounds,Stringr,Strsplit,假设我有一个字符串表: 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" ) 要在特定模式之前实现拆分,正则表达式模式应该是什么?相关模式之间的管道字符数可能不同

假设我有一个字符串表:

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" )
要在特定模式之前实现拆分,正则表达式模式应该是什么?相关模式之间的管道字符数可能不同,我无法可靠地使用它们。我模糊地意识到前瞻性等。此代码不会返回我期望的结果,但我相信我正在寻找类似的解决方案(这不会实现我想要的):

df2%
变异(备选方案=
str_split(备选方案,

pattern=“(?您可以尝试在以下正则表达式模式上拆分:


(?您可以尝试在以下正则表达式模式上拆分:


(?试试
”(?你需要确切知道你能得到什么数字。例如,它们能包含指数吗?还有,当没有数字时,为什么要在“优化”之前拆分?或者是“在数字之前拆分,也在“优化”这个词之前拆分?”@dash2向量的各个部分要么以12.34这样的数字开头(可能是价格)或者使用关键字“optimized”Try
”(?你需要确切地知道你能得到什么数字。例如,它们能包含指数吗?还有,当没有数字时,为什么要在“optimized”之前拆分?或者是“在数字之前拆分,也在单词“optimized”之前拆分?”@dash2向量的各个部分都以12.34这样的数字开头(可能是价格)或带有关键字“优化”"非常好,谢谢。你推荐哪本书来学习它?Regex几乎就像一门语言,你需要使用它来提高你的内在水平。假设Regex是你技术堆栈的一部分,这会自然而然地发生。如果不是,那么你可以自己练习。非常好,谢谢。你推荐哪本书来学习它?Regex是就像一门语言一样,你需要使用它来提高你的内在水平。假设正则表达式是你的技术堆栈的一部分,这是自然发生的。如果不是,那么你可以自己练习。
c(23.32 | x232 code | This is a description|, 43.11 | a341 code | some other description |,  optimised | v333 code | still another description)
df2 <- 
  df %>% 
  mutate(alternatives = 
           str_split(alternatives, 
                     pattern = "(?<=[a-zA-Z])\\s*(?=[0-9])"))
enter code here
df2 <- df %>% 
    mutate(alternatives = 
        str_split(alternatives, 
                  pattern = "(?<=\\S)\\s+(?=(?:\\d+\\.\\d+|optimised)\\b)"))