Emacs에서 대화식으로 정규식 검색 및 바꾸기를 어떻게 연습 할 수 있습니까?


12

정규식을 사용하여 검색하고 교체하는 것은 이러한 작업을 일상적으로 수행 할 수있는 Emacs 사용자에게 강력한 도구입니다. 그러나 Emacs (및 / 또는 프로그래밍) 초보자로서 정규식을 배우고 연습해야합니다.

내장 Emacs 튜토리얼과 유사하게 Emacs에서 대화식 으로 정규식을 배우고 훈련 할 수 있습니까 ? 그렇지 않다면 Emacs를 사용하여 검색 및 바꾸기에 정규식 사용을 연습 할 수있는 다른 제안은 무엇입니까?


1
이 문서는 약간 완성되었습니다 : wikemacs.org/wiki/Regexp
Ehvince

답변:


17

또한 visual-regexpregexp-builder고려 하여 진행중인 교체에 대한 시각적 피드백을 제공 할 수도 있습니다 .

비주얼 정규식 스냅 샷


3
또는 더 anzu똑같이 더 많은 일을합니다.
sanityinc

16

M-x regexp-builder RET대화식 정규 표현식 매처를 시도해보십시오. 나쁘지 않습니다.


7
C-g당신이 예상대로 종료되지 않을 때 당황하지 마십시오 . C-c C-q연습이 끝나면 regexp 빌더를 종료하는 기본 키 바인딩입니다.
nispio

5

내가 사용하는 regexp-builder대화 형 regexps '에와 피드백을 얻을 테스트하자한다. 물론 일단 사용하기 시작하면 즉시 "이 정규 표현식을 query-replace-regexp어떻게 입력합니까?"

내가 선택한 대답은 EmacsWiki ReBuilder 페이지 에 정의 된 다음 기능 입니다.

(defun reb-query-replace (to-string)
  "Replace current RE from point with `query-replace-regexp'."
  (interactive
   (progn (barf-if-buffer-read-only)
          (list (query-replace-read-to (reb-target-binding reb-regexp)
                                       "Query replace"  t))))
  (with-current-buffer reb-target-buffer
    (query-replace-regexp (reb-target-binding reb-regexp) to-string)))

내 워크 플로는 다음과 같습니다.

  1. M-x re-builder
  2. 타입 타입 타입
  3. M-x reb-query-replace

3

정규 표현식을 사용하여 정규 표현식의 특정 부분, 특히 정규 표현식 그룹과 일치하는 부분을 보는 법을 배우는 데 큰 도움이 될 수 있습니다. 그리고 대화식으로 그리고 점증 적으로 그렇게합니다.

@immerr의 답변을 따라 차가워 요 검색 은 오랫동안 비슷한 강조 표시 를했습니다.

여기에 이미지 설명을 입력하십시오



1

emacs에는 없지만 http://rubular.com/ 에는 기본적으로 regexp-builder치트 시트가 있습니다. 예제를 설정하고 해당 예제에 대한 링크 를 뱉어 낼 수 있습니다 . 팀과 정규식을 논의 할 때 이것을 사용합니다.


1
루비는 emacs-flavored Regexp를 사용합니까?
nispio

1

Dave F의 대안으로 regexp-builder패턴 일치를 연습하기 위해 임의의 텍스트를 작성할 수도 있습니다.

이 명령의 가장 유용한 기능은 패턴이 작성 될 때 버퍼에서 일치하는 항목을 강조 표시하여 올바른 패턴 일치를 보장하는 것입니다.

(query-replace-regexp)( C-M-%)를 사용 하고 정규식을 만들어 원하는 교체를 수행하면 연습에 도움이됩니다.


regexp-builder아직 제공하지 않는 정규식을 "연습"하려는 사람에게이 기능이 어떤 이점을 제공합니까? 문제 query-replace-regexp는 전체 정규 표현식을 작성한 다음 일치하는 것을 찾기 위해 커밋해야한다는 것입니다. 결과가 마음에 들지 않으면 다시 시작해야합니다. regexp-builder당신이하고있는 일을 모르는 경우 작동 할 때까지 정규 표현식을 쉽게 조정할 수 있도록 일치를 즉시 표시합니다.
nispio

1
나는 그것이 단점이라고 인정한다. 그러나 정규 표현식에 익숙하다면 query-replace-regexpEmacs에서이를 사용하는 데 익숙해 질 것입니다.
Jonathan Leech-Pepin

아마도 ...하지만 OP가 요구하는 것과 일치하지 않는 것 같습니다. "정규 표현식에 익숙하다면 정규 표현식을 전혀 배울 필요가 없습니다 .
nispio

1
OP는 대화식 을 Emacs 초보자로 사용하는 방법 /시기를 배우는 방법을 묻고 있습니다. 그들은 이미 다른 유형의 정규 표현식에 대한 정규 지식을 가지고있을 수 있습니다.
Jonathan Leech-Pepin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.