2012-08-14 3 views
3

가끔은 R을 사용하여 기사 작성시 따옴표로 pdfs에서 텍스트를 파싱합니다 (저는 LATEX을 사용합니다). 한 가지 내가하고 싶은 것은 LATEX 스타일의 왼쪽 및 오른쪽 따옴표로 바로 왼쪽 및 오른쪽 따옴표를 변경하는 것입니다.gsub 조건이 발생할 때마다

라텍스 "dog"``dog''에 변경 것이다 (그래서 두 사람은 '권리의 왼쪽과 두 개의'에 대한)

는 여기에 내가 있고 내가 무엇을 좀하고 싶습니다 무엇의 예입니다.

#currently 
x <- c('I like "proper" cooking.', 'I heard him say, "I want some too" and "nice".') 

[1] "I like \"proper\" cooking." "I heard him say, \"I want some too\" and \"nice\"." 

#desired outcome 
[1] "I like ``proper'' cooking." "I heard him say, ``I want some too'' and ``nice''." 

편집 : 생각 나는 상황에 대한 실제 사용을 공유하고자합니다. ttmaccer의 솔루션을 사용하면 (윈도우 머신에서 작동) :

g <- function(){ 
    require(qdap) 
    x <- readClipboard() 
    x <- clean(paste2(x, " ")) 
    zz <- mgsub(c("- ", "“", "”"), c("", "``", "''"), x) 
    zz <- gsub("\"([^\"].*?)\"","``\\1''", zz) 
    writeClipboard(noquote(zz), format = 1) 
} 

참고 : qdapHERE을 다운로드 할 수 있습니다

답변

3

순수한 솔루션 w 수 울드 :

> gsub("\"([^\"].*?)\"","``\\1''",x) 

[1] "I like ``proper'' cooking."       
[2] "I heard him say, ``I want some too'' and ``nice''." 

하지만 난 당신이 작동 "some \"text\" with one \""

+0

을 처리 할 방법을 모르겠어요. 어쨌든 출력을 검사 할 것이므로 대부분의 시간 (시간 절약)을 위해 찾고 있습니다. –

1

2 단계 솔루션 :

1 단계 : 이중 인용 문자열과 일치하는 "((?:[^\\"]|\\.)*)"를 사용
단계 2 : \\"([^\\"]*)\\"을 사용하여 단계 1의 그룹 1에서 \"을 대체하십시오.

관련 문제