는 R

2017-12-19 16 views
1
에서 문자열과 브라켓 사이의 모든 문자를 제거

내가 열 안양 $ 문자열의 등등는 R

[cat 00.04;09] 
[cat 00.04;10] 

와 같은 문자열을 포함하는 dataframe DF을 말해봐. 나는 I이 사용 GSUB를 해봤지만 작동하지 않습니다와 내가 뭘하는지 모르겠어요

[cat] 
[cat] 

을 산출하기 위해 사이의 모든 문자를 제거하기 위해 "[고양이"및 을 "]"원하는 잘못된 : 귀갑이 ca 다음 어떤 0+ t 문자 만 가능한 적은 다음 ] 일치

gsub('cat*?\\]', '', df) 
+1

무엇이 잘못되었는지 확인하려면 실패한 코드를 우리와 공유해야합니다. –

+1

충분히 좋으므로, 나쁜 코드를 추가했습니다. 감사합니다. – soosus

+1

정말 좋지 않습니다.'gsub ('\\ [cat. *? \\]', '[cat]', df $ strings)'를 사용해보십시오. 또는'gsub ('(\\ [cat). *? (\\)), \\ 1 \\ 2, df $ strings)'. 또는'gsub ('\\ [cat [^]] * \\]', '[cat]', df $ strings)'. –

답변

4

cat*?\\]있다.

당신은 이외의 문자를 일치시킬 ][cat 사이 ] : \\[

    • , 여기

      gsub('\\[cat[^]]*\\]', '[cat]', df$strings) 
      

      - 일치 [

    • cat - 일치 cat
    • [^]]* - ] 이외의 0 개 이상의 문자 (시작 부분에 괄호 표현식 안에 넣을 때는 ]을 입력해야합니다. 그렇지 않으면 PCRE 정규식 엔진이 대괄호 안에 정규식 이스케이프를 처리 할 수 ​​있으므로 perl=TRUE 인수를 추가해야합니다. 표현식 (기본 TRE 아님)
    • \\] - a ] (심지어 탈출 할 필요도 없습니다. ]을 사용하면됩니다.)

    R demo 참조 : cat 어떤 워드 일 경우

    x <- c("[cat 00.04;09]", "[cat 00.04;10]") 
    gsub('\\[cat[^]]*\\]', '[cat]', x) 
    ## => [1] "[cat]" "[cat]" 
    

    가 사용

    (\\w+) 1 이상의 단어의 문자와 일치하는 ID = 1 포착 기
    gsub('\\[(\\w+)[^]]*\\]', '[\\1]', x) 
    

    , 대체 패턴의 \\1은 그룹 값을 나타내는 대체 역 참조입니다.