2012-08-02 6 views
2

작동하는이 정규 표현식을 작성했지만 솔직히 75 % 추측과 같습니다. 이 정규식을 어떤 방법으로 개선 할 수 있습니까?

목표

은 이것이다 :

#import <UIKit/UIKit.h> 
#import "NSString+MultilineFontSize.h" 

을하고 난 단지 +이 포함 된 범주를 반환 할 : 나는과 같이, 엑스 코드에서 수입을 많이 가지고있다. 다른 컨텍스트에는 +을 포함하는 소스 코드 전체가 많이 있습니다.

지금은 Xcode 프로젝트 전체에서 적절한 모든 라인을 반환합니다. 그러나 내가 정규식 튜토리얼에 대한 검색 및 스택 오버플로 검색에서 배운 한 가지가 있다면, 많은 일을 할 수있는 다양한 방법이 있다는 것입니다. 여러분이 생각할 수있는 다양한 방법을 모두보고 싶습니다. 잠재적 인 스푸핑이나 누락과 관련하여 더 효율적이거나보다 방탄적으로 만들 수 있습니다.

^\#import+.[\"]*+.(?:(?!\+).)*+.*[\"] 

미리 도움을 주셔서 감사합니다.

업데이트는 나는 가능한 스푸핑을 놓치지 않고, 가장 짧은 문자열이 작업을 수행 누구의 대답을 받아 들일 것 같아요. 그러나이 학습 경험에 참여한 모든 사람들에게 다시 한번 감사드립니다. 답변

이 댄 라스무센에서 정규식을 연습 멋진 자원에서

자료 : RegExr

+0

기록의 경우 가장 짧은 표현이 항상 최상의 것은 아닙니다 ... – dlras2

+0

글쎄, 나는 항상 하하를 투표에 올려 놓을 수 있습니다 –

답변

3

내가주의 첫 번째 것은 당신의 + 문자가 잘못되어 있다는 것입니다 : t+. 일치 t을 한 번 이상 그 뒤에 단일 문자 .이옵니다. 가져 오기가 끝나고 하나 이상의 문자가 나오면 다음과 같이 입력하십시오. import.+

두 번째로 #을 이스케이프 할 필요가 없습니다. 당신이 라인이 실제로 #import하지 #importbutnotreally 또는 다른 어떤로 시작 보장하고 있으므로, ^#import\s+(.*\+.*)$

\s+ 하나 이상의 공백 문자와 일치 :

는 여기에 내가 무엇을 최대 온입니다.

나는 엑스 코드 구문에 익숙하지 해요,하지만 표현, (.*\+.*) 다음과 같은 부분은, 단순히 + 문자 그 안에있는 모든 문자열과 일치합니다. 이는 잘못된 가져 오기가 일치 할 수 있음을 의미하지만 유효한 코드와 일치시키려는 가정하에 작업하고 있습니다. 그렇지 않은 경우 수입업자 구문을 검증하기 위해 수정해야합니다.


P. 표현식을 테스트하려면 RegExr을 시도하십시오. 캐릭터를 가리켜 서 자신이하는 일을 확인할 수 있습니다.

+0

굉장 링크. 이런 것들을 쉽게 배워야합니다. –

+0

또한 당신의 정규식은 매력처럼 작동했고, 내가 haha를 놓치지 않았다는 것을 더 기분 좋게 만드는 내 것과 완전히 똑같은 것을 발견했습니다. 귀하의 기여에 감사드립니다. –

0
sed 's:^#import \(.*[+].*\):\1:' FILE 

샘플에 대한

"NSString+MultilineFontSize.h" 

를 표시합니다.

관련 문제