Google 문서 도구 정규식 바꾸기에서 캡처 그룹의 텍스트를 사용하는 방법은 무엇입니까?


12

특정 텍스트를 일치시키고 텍스트와 추가 문자로 바꾸려고합니다. 최소 예제 텍스트 :

#10 Oranges. These are citrus fruits

원하는 출력 :

#10 Oranges. These are citrus fruits

정규식 : (#\d{1,2}[^.]*\.)\s*

다음으로 교체하십시오. $1\n

( Match using regular expressions확인했습니다)

정규식이 성공적으로 일치 #10 Oranges.합니다. 그러나 번호가 매겨진 역 참조는 텍스트를 캡처 그룹으로 대체하지 않고 문자 그대로 나타납니다 (리터럴 출력은 $1\n). 번호가 매겨진 역 참조에 백 슬래시를 사용하려고 시도했지만 \1결과는 동일합니다.

내가 놓친 것이 있습니까? 정규식을 사용하여 Google 문서에서 일치하는 텍스트를 다시 삽입하려면 어떻게합니까?


2
워드 프로세서 지금은 명시 적으로 상태 : Note: Capture groups only work with Google Sheets.참조 support.google.com/docs/answer/62754#regular_expressions
사용자

답변:


4

짧은 답변

내장 된 찾기 및 바꾸기 기능을 사용하는 대신 Google Apps Script 또는 애드온을 사용하십시오.

설명

Google 문서의 찾기 및 바꾸기 기능에서 바꾸기 부분은 정규식에서 작동하지 않으며 replaceText()Google Apps Script의 문서 서비스에서 제공 한 방법으로도 작동하지 않습니다 . 다행히 JavaScript 바꾸기 방법이 작동합니다.

간단한 스크립트를 만드는 기본 사항을 배우려면 https://developers.google.com/apps-script/overview를 참조 하십시오.

암호

이 코드는 참조에 포함 된 코드의 적응입니다

function myFunction() {
  var body = DocumentApp.getActiveDocument().getBody();
  var paragraphs = body.getParagraphs();
  for (var i=0; i<paragraphs.length; i++) {
    var text = paragraphs[i].getText();
    paragraphs[i].replaceText(".*", 
       text.replace(/(\d{1,2}[^.]*\.)\s*/gi, '$1\n') );
  }
}

참고 문헌


3
나는 이것을 조사하는 것을 고려할 것이지만, 대체가 정규식에서 작동하지 않는다는 것이 버그입니까? 이 문서에 따르면 다음과 같이 작동하는 것 같습니다 : support.google.com/docs/answer/62754#regular_expressions (섹션 참조 Replace with regular expressions)
User

2

약간 해 키지 만 스크립트에 추가 기능이 필요하지 않으며 사용 사례의 99 %를 차지할 것입니다. RegexReplace텍스트를 $1또는로 대체 할 때 캡처 그룹 과 참조를 함께 사용할 수 있습니다 $2. 정규식을 두 개의 캡처 그룹으로 나누고와 같이 임의의 (자주 사용되지 않는) 문자로 연결하십시오 ~. 그런 다음 전체 반환 값을 가져 와서 ~줄 바꿈으로 바꿀 수 있습니다 .

=SUBSTITUTE(REGEXREPLACE(A1,"(#\d{1,2}[^.]*\.)(\s*)","$1~$2"),"~",CHAR(10))

스크린 샷

Google 시트에 사용되는 정규식 구문에 대한 자세한 내용은 re2 사양을 참조하십시오.


문제는 내가 이해하는 한 시트가 아닌 문서에 관한 것입니다.
törzsmókus

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.