SlideShare une entreprise Scribd logo
1  sur  33
Regex & Property Sheet
http://whiletrue0222.com/
@whiletrue0222
http://cafe.naver.com/architect1
아꿈사
2012. 09. 01




    http://www.flickr.com/photos/jacqueline-w/2837089885/sizes/l/in/photostream/
목록
• 정규표현식을 활용한 찾기 및 바꾸기

• Property Sheet를 활용하자.
정규 표현식이란




http://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%
9D
Visual Studio에서 정규식 사용
                 기본적인 구문
                 몇 개만 나온다.




정규식을 쓰려면 체크
어느 날 갑자기 팀장님이 부르신다..

한글로 된 로그 전부 영어로 바꾸란다.

작성된 로그가 수천 개가 된다!

한글로 된 것을 언제 다 일일이 찾지?
로그코드는 대략 이렇게..



 WriteLog(“로그메시지”);
코드 구문 분석

함수 이름        문자열



  WriteLog(“로그메시지”);
찾는 정규식
찾을 코드


         WriteLog(“로그메시지”);

         WriteLog.*:Ha

찾는 정규식
함수이름이 일치하고

      WriteLog(“로그메시지”);

      WriteLog.*:Ha
중간에 문자들이 있고

           WriteLog(“로그메시지”);

           WriteLog.*:Ha

    식       구문              구문
   단일 문자     .   줄 바꿈 문자를 제외한 모든 단일 문자
   0 이상      *   앞의 식을 0번 이상 찾습니다.
한글이 있다.

          WriteLog(“로그메시지”);

          WriteLog.*:Ha

    식      구문                구문
    한글      :Ha   한글 및 조합 자모를 찾습니다.
Visual Studio에서 검색하면.


정규식에 일치하는
문자열들
팀장님이 또 부르신다…..


strcpy를 strncpy_s로 전부 바꾸거라.
함수 차이점


strcpy( dest, src );
                             count 변수 추가


strncpy_s( dest, src, count );


함수명이 다름
정규식으로 찾기
함수이름을 찾고

  strcpy( dest, src );


 strcpy{.*}{)}
기존 매개변수 찾고

  strcpy( dest, src );


  strcpy{.*}{)}

                         {} - 태그식 뒤에서 설명합니다.
닫기 괄호를 찾는다

  strcpy( dest, src );


  strcpy{.*}{)}
바꾸기
함수 이름을 변경

  strcpy( dest, src );


  strcpy{.*}{)}


  strncpy_s1, _TRUNCATE2
매개변수를 대입

  strcpy( dest, src );


 strcpy{.*}{)}


  strncpy_s1, _TRUNCATE2
Count 를 추가

  strcpy( dest, src );


  strcpy{.*}{)}


  strncpy_s1, _TRUNCATE2
닫기 괄호를 대입

  strcpy( dest, src );


  strcpy{.*}{)}


  strncpy_s1, _TRUNCATE2
결과
주의

앞서 설명한 정규식은 단순하여

실제로 사용할 때는 여러 상황을

고려해서 식을 만들어야 한다.
목록
• 정규표현식을 활용한 찾기 및 바꾸기

• 속성 시트(Property Sheet)를 활용하자.
속성 시트 (Property Sheet)




http://msdn.microsoft.com/ko-kr/library/a4xbdz1e(v=vs.100).aspx
다수의 프로젝트를 각각 설정?
                  각각 설정하면 고생.
                  디렉터리 구조 변경되면 눈물.
                  실수 위험도 높다.

                  속성시트를 활용하자.



Ogre 1.8 sample
속성시트 적용 전




  중복
속성시트 적용 후


  중복제거
_UNICODE 전처리기는
어디에 선언 되어있나?
_UNICODE 정의됨




   C:Program Files (x86)MSBuildMicrosoft.Cppv4.0 (제 컴 기준)
속성관리자
• 보기 -> 속성관리자 창에서
  추가 가능

• 대부분의 프로젝트 설정을
  상속시킬 수 있다.
참고
• List of regular expression software
  – http://en.wikipedia.org/wiki/List_of_regular_ex
    pression_software
• 정규식(Visual Studio)
  – http://msdn.microsoft.com/ko-
    kr/library/2k3te2cs(v=vs.100).aspx
• 속성 시트(C++)
  – http://msdn.microsoft.com/ko-
    kr/library/a4xbdz1e(v=vs.100).aspx
감사합니다.

Contenu connexe

Tendances

연산자 오버로딩
연산자 오버로딩연산자 오버로딩
연산자 오버로딩수빈 박
 
프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js functionYoung-Beom Rhee
 
Effective c++ item27
Effective c++ item27Effective c++ item27
Effective c++ item27진화 손
 
JavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and ConstructorsJavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and ConstructorsHyuncheol Jeon
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oopYoung-Beom Rhee
 
Java, android 스터티1
Java, android 스터티1Java, android 스터티1
Java, android 스터티1Heejun Kim
 
Hacosa js study 2주차
Hacosa js study 2주차Hacosa js study 2주차
Hacosa js study 2주차Seong Bong Ji
 
Javascript Test Double Sinon.js
Javascript Test Double Sinon.jsJavascript Test Double Sinon.js
Javascript Test Double Sinon.js우영 주
 
불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화Hun Yong Song
 
골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료욱진 양
 
[Pl in c++] 9. 다형성
[Pl in c++] 9. 다형성[Pl in c++] 9. 다형성
[Pl in c++] 9. 다형성MinGeun Park
 
호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFEChangHyeon Bae
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitiveNAVER D2
 
Dependency hell과 빌드지옥 탈출
Dependency hell과 빌드지옥 탈출Dependency hell과 빌드지옥 탈출
Dependency hell과 빌드지옥 탈출Byeongsu Kang
 
[ES6] 4. Spread, Rest parameter
[ES6] 4. Spread, Rest parameter[ES6] 4. Spread, Rest parameter
[ES6] 4. Spread, Rest parameterHan JaeYeab
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Park Jonggun
 

Tendances (20)

연산자 오버로딩
연산자 오버로딩연산자 오버로딩
연산자 오버로딩
 
프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function
 
Effective c++ item27
Effective c++ item27Effective c++ item27
Effective c++ item27
 
JavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and ConstructorsJavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and Constructors
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop
 
Java, android 스터티1
Java, android 스터티1Java, android 스터티1
Java, android 스터티1
 
1. alps c&c++
1. alps c&c++1. alps c&c++
1. alps c&c++
 
Hacosa js study 2주차
Hacosa js study 2주차Hacosa js study 2주차
Hacosa js study 2주차
 
Javascript Test Double Sinon.js
Javascript Test Double Sinon.jsJavascript Test Double Sinon.js
Javascript Test Double Sinon.js
 
불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화불변객체 적용으로 리액트 성능 최적화
불변객체 적용으로 리액트 성능 최적화
 
골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료
 
Cp2 w5
Cp2 w5Cp2 w5
Cp2 w5
 
[Pl in c++] 9. 다형성
[Pl in c++] 9. 다형성[Pl in c++] 9. 다형성
[Pl in c++] 9. 다형성
 
호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE
 
Mec 56
Mec 56Mec 56
Mec 56
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
 
javascript02
javascript02javascript02
javascript02
 
Dependency hell과 빌드지옥 탈출
Dependency hell과 빌드지옥 탈출Dependency hell과 빌드지옥 탈출
Dependency hell과 빌드지옥 탈출
 
[ES6] 4. Spread, Rest parameter
[ES6] 4. Spread, Rest parameter[ES6] 4. Spread, Rest parameter
[ES6] 4. Spread, Rest parameter
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수
 

Similaire à Regex & property sheet

[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로Oracle Korea
 
Programming skills 1부
Programming skills 1부Programming skills 1부
Programming skills 1부JiHyung Lee
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개Dong Jun Kwon
 
Clean code
Clean codeClean code
Clean codebbongcsu
 
C Language I
C Language IC Language I
C Language ISuho Kwon
 
Programming Cascading
Programming CascadingProgramming Cascading
Programming CascadingTaewook Eom
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 명신 김
 
파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법SeongHyun Ahn
 
Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기JangHyuk You
 
처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1성일 한
 
GPG 1.1 객체지향적 프로그래밍과 설계기법
GPG 1.1 객체지향적 프로그래밍과 설계기법GPG 1.1 객체지향적 프로그래밍과 설계기법
GPG 1.1 객체지향적 프로그래밍과 설계기법Taeung Ra
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)상욱 송
 

Similaire à Regex & property sheet (20)

06장 함수
06장 함수06장 함수
06장 함수
 
6 function
6 function6 function
6 function
 
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
 
Java.next
Java.nextJava.next
Java.next
 
Programming skills 1부
Programming skills 1부Programming skills 1부
Programming skills 1부
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개
 
Clean code
Clean codeClean code
Clean code
 
C Language I
C Language IC Language I
C Language I
 
Programming Cascading
Programming CascadingProgramming Cascading
Programming Cascading
 
javascript01
javascript01javascript01
javascript01
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14
 
C++ api design 품질
C++ api design 품질C++ api design 품질
C++ api design 품질
 
파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법
 
Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기
 
Spring Boot 2
Spring Boot 2Spring Boot 2
Spring Boot 2
 
처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1
 
GPG 1.1 객체지향적 프로그래밍과 설계기법
GPG 1.1 객체지향적 프로그래밍과 설계기법GPG 1.1 객체지향적 프로그래밍과 설계기법
GPG 1.1 객체지향적 프로그래밍과 설계기법
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)
 

Plus de Youngkwon Lee

Windows viac cpp_15장_16장
Windows viac cpp_15장_16장Windows viac cpp_15장_16장
Windows viac cpp_15장_16장Youngkwon Lee
 
아꿈사 2011 연말행사 자유발표 - 맥킨지, 발표의 기술
아꿈사 2011 연말행사 자유발표 - 맥킨지, 발표의 기술아꿈사 2011 연말행사 자유발표 - 맥킨지, 발표의 기술
아꿈사 2011 연말행사 자유발표 - 맥킨지, 발표의 기술Youngkwon Lee
 
프로젝트가 서쪽으로 간 까닭은 5,6,15,25,40
프로젝트가 서쪽으로 간 까닭은 5,6,15,25,40프로젝트가 서쪽으로 간 까닭은 5,6,15,25,40
프로젝트가 서쪽으로 간 까닭은 5,6,15,25,40Youngkwon Lee
 
HTML5&CSS3 8장. 눈을 즐겁게
HTML5&CSS3 8장. 눈을 즐겁게HTML5&CSS3 8장. 눈을 즐겁게
HTML5&CSS3 8장. 눈을 즐겁게Youngkwon Lee
 
Domain driven design_chapter2
Domain driven design_chapter2Domain driven design_chapter2
Domain driven design_chapter2Youngkwon Lee
 
소프트웨어 아키텍트가 알아야할 97가지
소프트웨어 아키텍트가 알아야할 97가지소프트웨어 아키텍트가 알아야할 97가지
소프트웨어 아키텍트가 알아야할 97가지Youngkwon Lee
 
Taocp 1.4.1 subroutine
Taocp 1.4.1 subroutineTaocp 1.4.1 subroutine
Taocp 1.4.1 subroutineYoungkwon Lee
 

Plus de Youngkwon Lee (9)

Windows viac cpp_15장_16장
Windows viac cpp_15장_16장Windows viac cpp_15장_16장
Windows viac cpp_15장_16장
 
아꿈사 2011 연말행사 자유발표 - 맥킨지, 발표의 기술
아꿈사 2011 연말행사 자유발표 - 맥킨지, 발표의 기술아꿈사 2011 연말행사 자유발표 - 맥킨지, 발표의 기술
아꿈사 2011 연말행사 자유발표 - 맥킨지, 발표의 기술
 
프로젝트가 서쪽으로 간 까닭은 5,6,15,25,40
프로젝트가 서쪽으로 간 까닭은 5,6,15,25,40프로젝트가 서쪽으로 간 까닭은 5,6,15,25,40
프로젝트가 서쪽으로 간 까닭은 5,6,15,25,40
 
HTML5&CSS3 8장. 눈을 즐겁게
HTML5&CSS3 8장. 눈을 즐겁게HTML5&CSS3 8장. 눈을 즐겁게
HTML5&CSS3 8장. 눈을 즐겁게
 
Domain driven design_chapter2
Domain driven design_chapter2Domain driven design_chapter2
Domain driven design_chapter2
 
소프트웨어 아키텍트가 알아야할 97가지
소프트웨어 아키텍트가 알아야할 97가지소프트웨어 아키텍트가 알아야할 97가지
소프트웨어 아키텍트가 알아야할 97가지
 
Taocp 1.4.1 subroutine
Taocp 1.4.1 subroutineTaocp 1.4.1 subroutine
Taocp 1.4.1 subroutine
 
my puppy
my puppymy puppy
my puppy
 
웹질팁
웹질팁웹질팁
웹질팁
 

Regex & property sheet