r - 如果分隔符前没有 space 则拆分
r - Just split if there is no space before separator
有人知道在某个字符串处使用拆分字符串的方法,但前提是之前没有 space 吗?甚至可以使用 strsplit 函数?
这是一个例子:
input_str = "For example. Production of something a Product.ProIts cool"
我想使用“.ProIts cool”中的 "Pro" 拆分字符串,但不使用 Production 或 Product 中的其他 "Pro"。在任何情况下,Pro 之前都没有一个点,但是如果有人用 "Pro..." 写了一些东西,那么应该总是有一个 space。我也有不同的分隔符。这是我当前的代码,如果文本中没有重复的分隔符,它可以正常工作:
arr_seperators = c("String1", "Pro" , "Contra")
n = 3
output = rep(0,n)
for ( i in 1:n){
output[i] = strsplit(input_str, arr_seperators[i])[[1]][2]
for (j in 1:n){
output[i] = strsplit(output[i], arr_seperators[j])[[1]][1]
}
}
print(output)
strsplit("For example. Production of something a Product.ProIts cool",
"(?<!\s)Pro", perl = TRUE)
# [[1]]
# [1] "For example. Production of something a Product." "Its cool"
(?<!\s)
使用 regex lookaround,在使用与 perl 兼容的正则表达式 (perl=TRUE
) 时受支持。
(?<=...)
是积极的回顾; (?<!...)
表示 负面回顾 ,又名 前面没有 ; \s
是 "whitespace"。环顾四周的前提通常是在 before/after 您的模式存在时进行匹配,但不使用捕获的子字符串中的 preceding/following 文本。
对于非空白,我们还可以使用 (?<=\S)
的正后视。
也许您正在寻找这样的东西?
如果没有,请添加所需的输出..
#split after the delimiter and keep it
base::strsplit( "For example. Production of something a Product.ProIts cool",
split = "(?<=.)(?=\.Pro)",
perl = TRUE )
[[1]]
[1] "For example. Production of something a Product" ".ProIts cool"
有人知道在某个字符串处使用拆分字符串的方法,但前提是之前没有 space 吗?甚至可以使用 strsplit 函数? 这是一个例子:
input_str = "For example. Production of something a Product.ProIts cool"
我想使用“.ProIts cool”中的 "Pro" 拆分字符串,但不使用 Production 或 Product 中的其他 "Pro"。在任何情况下,Pro 之前都没有一个点,但是如果有人用 "Pro..." 写了一些东西,那么应该总是有一个 space。我也有不同的分隔符。这是我当前的代码,如果文本中没有重复的分隔符,它可以正常工作:
arr_seperators = c("String1", "Pro" , "Contra")
n = 3
output = rep(0,n)
for ( i in 1:n){
output[i] = strsplit(input_str, arr_seperators[i])[[1]][2]
for (j in 1:n){
output[i] = strsplit(output[i], arr_seperators[j])[[1]][1]
}
}
print(output)
strsplit("For example. Production of something a Product.ProIts cool",
"(?<!\s)Pro", perl = TRUE)
# [[1]]
# [1] "For example. Production of something a Product." "Its cool"
(?<!\s)
使用 regex lookaround,在使用与 perl 兼容的正则表达式 (perl=TRUE
) 时受支持。
(?<=...)
是积极的回顾; (?<!...)
表示 负面回顾 ,又名 前面没有 ; \s
是 "whitespace"。环顾四周的前提通常是在 before/after 您的模式存在时进行匹配,但不使用捕获的子字符串中的 preceding/following 文本。
对于非空白,我们还可以使用 (?<=\S)
的正后视。
也许您正在寻找这样的东西? 如果没有,请添加所需的输出..
#split after the delimiter and keep it
base::strsplit( "For example. Production of something a Product.ProIts cool",
split = "(?<=.)(?=\.Pro)",
perl = TRUE )
[[1]]
[1] "For example. Production of something a Product" ".ProIts cool"