2016-10-11 3 views
2

줄 바꿈 만 제거하고 소문자로 바로 이어주고 자하는 문자열이 있습니다. 예를 들어, 내 문자열이 포함되어있을 수 있습니다 :r에있는 특정 정규 표현식 제거

로 표시 할 텍스트 \ r에 \ n 다른 라인 \ 연구 \ 텍스트 NOF의

한 줄,

:

한 줄 텍스트의

다른 라인

텍스트의. 이 예에서

, 나는 텍스트 만 다음 읽을 것이다 그래야, 두 번째 줄 바꿈을 제거 할 것 : 텍스트

텍스트의 다른 라인의

한 줄을

패턴이 "\ r \ n [az]"이므로 코드가

와 같아야합니다.

하지만 소문자 글자를 유지하면서 줄 바꿈을 제거하는 코드를 만들 수 없습니다.

감사합니다.

답변

2

우리는 정규식 lookaround 당신은 이것에 대한 positive lookahead를 사용할 필요가

txtN <- gsub("\r\n(?=[a-z])", "", txt, perl = TRUE) 
cat(txtN, sep="\n") 
# one line of text 
# another line of text, 
+1

완벽하게 작동했습니다. 당신의 도움을 주셔서 대단히 감사합니다. – nhoff

1

를 사용할 수 있습니다.

text = "one line of text \r\n another line \r\nof text," 

fixed = gsub("\r\n(?=[a-z])", "", text, perl = T) 

cat(fixed) 
#> one line of text 
#> another line of text, 
+0

이것은 내가 게시 한 것과 비슷합니다. – akrun

+0

대단히 감사합니다! – nhoff

2

당신은 당신이 패턴 주위에 (...)를 사용하는 경우 IDEONE demo

를 참조 lookarounds없이 당신이 필요를 달성하고

s <- "one line of text \r\n another line \r\nof text," 
res <- gsub("\r?\n([a-z])","\\1", s) 
cat(res) 

같은 TRE 정규식을 사용할 수있다 : 예를 들어

당신은 캡쳐 그룹을 정의합니다 당신이 replaceme에서 참조 할 수있는 내용 NT 패턴.

패턴 자세한 사항 :

  • \r?\n을 - LINEBREAK (중 \r\n 또는 \n)
  • ([a-z]) - 그룹 1 내부 소문자 ASCII 문자를.

교체 :

  • \1 - 그룹 한 내용에 번호가 역 참조.

더 많은 정보에 대한 :

PS : 당신이 PCRE 정규식을 사용 촉각을 곤두 세우고있다 경우 내다가 아닌 하나 명의 아주 좋은 구조가 지원 - 모든 스타일의 줄 바꿈과 일치하는 \R. 그렇다면 다음과 같이 제안합니다.

gsub("\\R(?=[a-z])", "", txt, perl = TRUE)