2014-12-01 2 views
0

나는 약간의 자극이있다 "John a11|a12|\n Ana a21|a22|\n Jake a31|a23|\n " 정규식을 사용하여 "|"으로 분리 된 모든 부분을 추출하고 싶습니다. 특수 기호 (정규식)로 구분 된 단어를 추출

은 그래서 출력을 원하는

"John a11" "a12" "Ana a21" "a22" "Jake a31" "a23"

그리고 적절한 정규식을 만드는 방법 아이디어 나 어쩌면 R에 그냥 몇 가지 기능이 필요? 분할 정규 표현식 "[\\||\n] *"strsplit()를 사용

+0

사용'strsplit()'정확한 원하는 결과를 들어 – Andrie

답변

6

시도 :

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"  "" 
+0

:'strsplit (X, "[|] | (\\ | \ n을)") [[1]] ' –

+0

더욱 accurater' strsplit (x, "* [|] | (\\ | \ n) *") [[1]]' – stanekam

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 
+4

당신은'rex' 패키지의 저자라고 생각합니까? – stanekam

3

당신은 |에 분할 "0 개 이상의"공간 다음에 줄 바꿈 시퀀스를 선택 할 수 있습니다.

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"