왜 내 역 참조의 역전을 방지하기 위해 두 개의 백 슬래시를 사용해야하는지 이해할 수 없습니다. 아래에, 나는 내 문제를 발견 I 세부 방법 : 다음과 같이 할gsub에 하나의 백 슬래시를 사용할 때 R의 역 정규화 역 참조가 취소되는 이유는 무엇입니까?
x <- 53/100 000
그리고 변환 :
나는이처럼 보이는 문자를 변환하고 싶었
53/100000
다음은이 질문을하기 전에 내가 가진 몇 가지 아이디어입니다.
나는 gsub
함수를 사용하여 /
문자 다음에 오는 모든 공백을 제거 할 수 있습니다. 그러나, 나는 정규식 솔루션이 더 우아하고 효율적일 수 있다고 생각했다.
처음에는 정규식에서 역 참조하는 방법을 알고하지 않았다, 그래서 나는이 시도 :
> gsub("/.+\\s",".+",x) [1] "53.+000"
\1
를 사용하여 캡처 패턴을 역 참조 할 수 있음을 읽어 보시기 바랍니다. 그래서 이것을 사용하기 시작
> gsub("/.+\\s","\1",x) [1] "53\001000"
/
문자를 유지하고 싶었습니다. 그래서 나는 그것을 다시 추가 : 다음 다른 것들의 무리를 시도
> gsub("/.+\\s","/\1",x) [1] "53/\001000"
,하지만 난 여분의 백 슬래시를 추가하고 괄호 안에 내 와일드 카드로 묶어을 고정 :
> gsub("/(.+)\\s","/\\1",x) [1] "53/100000"
을 또한 패턴의 시작 부분에 왼쪽 괄호를 삽입하여 /
문자를 대체물에서 제거 할 수있었습니다.
> gsub("(/.+)\\s","\\1",x) [1] "53/100000"
흠, 괄호와 여분의 백 슬래시가 필요했습니다. 괄호는 내가 역 참조하는 텍스트의 일부가 무엇인지 나타내는 것으로 생각하기 때문에 생각합니다.
두 개의 백 슬래시가 필요한 이유는 무엇입니까?the reference website에서 \l
만 필요하다고합니다. 무슨 일 이니? 왜 내 역 참조가 바뀌 었습니까?
이제는 이해합니다. 나는 "\ 1"이 gsub에 의해 "\ 001"으로 표현되고, 나의 패턴이 "100"이기 때문에 매우 불행했을 것이다. 답변 해 주셔서 감사합니다. –