2014-02-08 4 views
0

저는 이맥스에 익숙하지 않고 이맥스를 배우고 있습니다!정규식 이맥스에서 .x와 같은 모든 숫자를 0으로 변경합니다.

랜덤 방식으로 많은 부동 소수점을 포함하는 텍스트 파일이 있습니다. 몇 가지 숫자가 .9, .184, .56 등처럼 저장하는 동안

어떤 숫자가

내가 0.xxxx 모든 .xxxx 번호를 변환 할 수 있습니다 이맥스에서 정규 표현식을 원하는 ... 등 0.9, 0.184 0.56처럼 저장하는 방법을 내가 할 수있는 이걸 달성 할까?

자리 최대 수 (이 중요한 경우) 부동 소수점하는

덕분에 많이 사 후!

답변

1

이 더 이상 필요하지 않을 @ (이상이어야이 특정 예를 들어) nullptr의 대답은,하지만 당신은 위의 정규 표현식은 character classes를 사용

\(^\|[^0-9]+\)\.\([[:digit:]]+\) 

CM- %에 바인딩 query-replace-regexp 다음과 같은 정규 표현식을 사용할 수 있습니다. [:digit:]은 임의의 숫자와 일치합니다. 그런 다음 당신은 정규 표현식 이맥스 구문이 조금 다르다는 것을 noticied 수도

\10.\2 

로 교체 할 수있는 정규 표현식 구문을 사용하면 예를 들어, 다른 언어에 익숙 할 수있다. (|은 emacs regexp에서 이스케이프해야합니다. 당신은 This emacswiki page는 이맥스 정규 표현식 구문에 대한 좋은 요약이 있습니다)

2 C-h f query-replace-regexp RET을 수행하여 이맥스 정규 표현식

1) 당신은 query-replace-regexp의 문서를 읽을 수 있습니다에 대한 학습에 대해 다음과 유용을 찾을 수 있습니다.

3) elisp manual에는 regexp 구문에 대한 자세한 설명이 있습니다.

, 당신은 정규 표현식을 입력 할 수 있으며이 곳 하단에 작은 창이 열립니다 M-x re-builder 이렇게하면 이맥스 정규 표현식에 대해

1) 바닐라 이맥스를 배우고 사용할 수있는 패키지의 몇 re-builder되어 있습니다 버퍼에서 regexp 일치를 강조 표시하십시오. 정규 표현식을 대체를 할 때

2) 이맥스 정규 표현식으로 작업 할 때 개인적으로 패키지 visual-regexp.el (link) 매우 유용한 찾을, 그것은 기본적으로 당신에게 그룹을 포함한 정규 표현식 일치 (의 '라이브 피드백'일치를) 제공합니다.여기이 부분은 어떤

enter image description here

로 대체 될 것입니다 무엇을 표시하는 정규 표현식을 교체 할 때

enter image description here

그리고 패키지가 제공하는 명령 vr/query-replace의 사용을 보여주는 스크린 샷 몇입니다

+0

숫자가 문자열의 시작 부분에 있으면 작동하지 않습니다. – Toto

+0

아, 죄송합니다. 정규 표현식을 수정합니다 –

+0

@ M42 오류를 지적 해 주셔서 고맙습니다. –

1

간단한 방법은 query-replace-regexp 기능 (C-M- %)에 내장 된 것을 사용하는 것입니다. 다음과 같은 것을 시작해야합니다.

쿼리 정규식 바꾸 \([^0-9]\)\(\.[0-9]+\)
쿼리 대체 정규 표현식 \을 ([^ 0-9] \) \ (\ [0-9] + \.)를 : \10\2

+0

숫자가 문자열의 시작 부분에 있으면 작동하지 않습니다. – Toto

관련 문제