2012-06-11 4 views
1

"\ cite {foo123a}"를 "[1]"이상으로 바꿔야합니다. 지금까지 나는 다음과 같은 명령특수 문자에 replaceText를 사용하는 데 문제가 있습니다 : []

body.replaceText('.cite{foo}', '[1]'); 

와 텍스트를 대체 할 수 있었다 그러나 나는

body.replaceText('\cite{foo}', '[1]'); 
body.replaceText('\\cite{foo}', '[1]'); 

이유를 사용하는 관리하지 않았다? 그들을 탈출

I 만이 "1"이 아니라는 [], 이것은 [] 정규식 문자 집합으로 해석하는 것을 의미 대체 모든

body.replaceText('[1]', '\\cite{foo}'); 

이에서 동작하지 않습니다 뒷면 변환하는 것은하지 않습니다 문서는

을 명시

body.replaceText('\[1\]', '\\cite{foo}');//no effect, still a char set 
body.replaceText('/\[1\]/', '\\cite{foo}');//no matches 

도움이 자바 스크립트 정규 표현식 기능의 부분 집합은 전체 없습니다 y를 지원합니다 (예 : 캡처 그룹 및 모드 수정 자).

지원되는 항목과 어딘지가 아닌 항목에 대한 자세한 설명을 찾을 수 있습니까?

답변

4

Google Apps Script에 익숙하지 않지만 일반적인 정규 표현식 문제와 유사합니다.

문자열 리터럴 '\[1\]''[1]'과 같기 때문에 두 번째 변환이 작동하지 않습니다. 문자 \[1\]을 문자열 리터럴로 인용하고 싶다면 '\\[1\\]'을 의미합니다. 문자열 리터럴 안의 슬래시는 의미가 없습니다. 이 경우 텍스트 /1/과 일치하는 패턴을 작성했습니다.

{...}은 리터럴 중괄호가 아니므로 한정자를 나타내므로 첫 번째 변환이 작동하지 않으므로 \\\\cite\\{foo\\}이 필요합니다. (\\하는 정규 표현식 리터럴 \에 맞게, 그리고 그것을 \\\\이다 리터럴 문자열이 있는지 확인하기 때문에 네 개의 백 슬래시는 -. 두 개의 백 슬래시를 이스케이프)

+0

당신은 그냥 평범한 자바 스크립트와 같은 애플리케이션 스크립트 정규식으로 작동합니다. 이 문서는이 문서에서 "고급 정규 표현식 사용"을위한 것으로,이를 사용하는 개발자는 미리 정규 표현식을 테스트 할 수 있습니다. 케빈 설명이 그 문제를 –

+0

고마워. 내일은 이걸 시험해보고 효과가 있는지 알려 줄거야. 나는 정규 표현식으로 오랫동안 일하지만 이것은 j에서 정규 표현식으로 시작한 것이고 다시 다름이다 o_O – select

+0

덕분에이 슈퍼 탈출은 여전히 ​​혼란 스럽지만 나는 배울 것이다 : D – select

관련 문제