我有点像"John a11|a12|\n Ana a21|a22|\n Jake a31|a23|\n "
的刺痛
我想使用正则表达式提取"|"
分隔的所有部分。
所以我想要输出
"John a11" "a12" "Ana a21" "a22" "Jake a31" "a23"
想法如何创建正确的正则表达式,或者它只需要R中的一些函数?
答案 0 :(得分:6)
尝试将strsplit()
与拆分正则表达式"[\\||\n] *"
一起使用:
x <- "John a11|a12|\n Ana a21|a22|\n Jake a31|a23|\n "
strsplit(x, split="[\\||\n] *")[[1]]
[1] "John a11" "a12" "" "Ana a21" "a22" "" "Jake a31" "a23" ""
答案 1 :(得分:3)
您可以在|
上拆分并使换行符序列可选,然后是“零或更多”空格。
x <- 'John a11|a12|\n Ana a21|a22|\n Jake a31|a23|\n '
strsplit(x, '\\|\n? *')[[1]]
# [1] "John a11" "a12" "Ana a21" "a22" "Jake a31" "a23"
答案 2 :(得分:1)
或者使用rex可能会使这类任务变得更简单。
x <- "John a11|a12|\n Ana a21|a22|\n Jake a31|a23|\n "
library(rex)
re_matches(x,
rex(
any_spaces,
capture(name = 'text',
except_some_of("|")
),
any_spaces),
global = TRUE)[[1]]
#> text
#>1 John a11
#>2 a12
#>3 Ana a21
#>4 a22
#>5 Jake a31
#>6 a23
#>7