레이블이 정규식인 게시물을 표시합니다. 모든 게시물 표시
레이블이 정규식인 게시물을 표시합니다. 모든 게시물 표시

2017년 1월 22일 일요일

정규식(regular expression) 사용 예시들 - 실무에 사용 후 기억하기 위해

1. 역참조(backreference)
Notepad++ 에서는 문자열 검색 시 정규식을 지원해 줍니다.



다양한 사용법 중 강력한 기능은 "역참조" (backreference) 입니다.

특정 문자열을 찾은 다음 그 문자열을 재 참조하여 사용할 수 있다는 의미 입니다.

예를 들어

92983/예시1 ;;Example200001
65453//예시2 ;Example400002

라는 문자가 있을 경우 여러가지 방법으로 정보를 추출하고 싶어 집니다.

숫자들(92983, 65453) 만 뽑거나
예시의 번호(1, 2)만 뽑는 것
혹은 Example 의 번호(200001, 400002) 를 뽑을 수도 있고
그 외에도 다른 여러가지 방법으로 뽑고 싶은 상황이 생깁니다.

치환은 이 때 사용할 수 있는데

아래 형태로 검색하면 위 내용이 한줄 씩 검색이 됩니다.

([0-9]+)[\/]*(예시[0-9 ]+)[\;]*(Example[0-9]+)


만약 마지막의 내용(Example 관련)만 뽑고 싶다면
바꾸기 에서 \3 을 입력하면 됩니다.

\3은 ( 과 ) 으로 감싸져 있는 3번째 항목 나타내는 말 입니다.

matching 시 개수를 지정하려면
[정규식]{번호}

2. 함수들 만을 남기기 위한
^((?!\([ a-zA-Z0-9\,\_]*\)).)*$
설명: 함수 선언의 필수인 ( 와 ) 를 가지고 있지 않은 줄을 찾기 위한 정규식

3. 특정 캐릭터가 없는 것
(?!\()
\( 가 없는 조건을 만들기 위하여 이 것을 "(?!" 과 ")" 를 감싼다.
?! 의 의미 ? 의 의미 ! 의 의미를 따로 알아야 한다.

4. 특정 캐릭터로 끝나는 것 (Link)
^.*(?<!to)$

5. 최소 몇개의 캐릭터가 있어야 하는 것
([0-9\:]{1,9})( )([0-9\:]{1,9}) ([A-Za-z\_0-9\,\?]*)
보통 * 만 쓰면 없을때도 있기 때문에{1, 9} 처럼 최소 1개 에서 9개 까지 를 명시해 주면 직관적으로 이해할 수 있다.

6. Visual Studio 에서 특정 함수를 print 하려고 할때

찾을 문자열: ([0-9a-zA-Z \=\_\-\*\,\(\)\;\:\" ]*cv[a-zA-Z0-9]*\([0-9a-zA-Z \=\_\-\*\,\(\)\;\:\" ]*;)
변경할 문자열: \1\n\#ifdef _DEBUG\n_cprintf\(\"\1\"\);\n\#endif
추가: \" 에 대한 고려