oc 에서 정규 표현 식 NSRegularExpression 클래스 상세 설명

5551 단어
정규 표현 식 생 성
NSRegularExpression
iOS 에서 NSRegularExpression 클래스 는 정규 표현 식 을 대표 합 니 다. 다음은 NSRegularExpression. h 헤더 파일 설명 정의 입 니 다.
속성 설명:
///      
@property (readonly, copy) NSString *pattern;
///      
@property (readonly) NSRegularExpressionOptions options;
///     
@property (readonly) NSUInteger numberOfCaptureGroups;

속성 은 모두 읽 을 수 있 습 니 다. 그 중에서 options 는 NSRegular ExpressionOptions 매 거 진 형식 입 니 다.
typedef NS_OPTIONS(NSUInteger, NSRegularExpressionOptions) {
   NSRegularExpressionCaseInsensitive             = 1 << 0,     /* Match letters in the pattern independent of case.            */
   NSRegularExpressionAllowCommentsAndWhitespace  = 1 << 1,     /* Ignore whitespace and #-prefixed comments in the pattern.              #      */
   NSRegularExpressionIgnoreMetacharacters        = 1 << 2,     /* Treat the entire pattern as a literal string.                */
   NSRegularExpressionDotMatchesLineSeparators    = 1 << 3,     /* Allow . to match any character, including line separators.   .      ,      */
   NSRegularExpressionAnchorsMatchLines           = 1 << 4,     /* Allow ^ and $ to match the start and end of lines.   ^ $           */
   NSRegularExpressionUseUnixLineSeparators       = 1 << 5,     /* Treat only 
as a line separator (otherwise, all standard line separators are used).
, 。*/ NSRegularExpressionUseUnicodeWordBoundaries = 1 << 6 /* Use Unicode TR#29 to specify word boundaries (otherwise, traditional regular expression word boundaries are used). Unicode TR#29 , */ };

방법 목록 설명
정규 표현 식 대상 을 만 드 는 데 클래스 방법 과 인 스 턴 스 방법 을 제공 합 니 다. 정규 와 일치 하 는 pattern (모드), 조건 옵션 과 오류 주 소 를 제공 해 야 합 니 다.
+ (nullable NSRegularExpression *)regularExpressionWithPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options error:(NSError **)error;

- (nullable instancetype)initWithPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options error:(NSError **)error NS_DESIGNATED_INITIALIZER;

정규 표현 식 이 어떻게 만 들 어 졌 는 지 알 고 있 습 니 다. 다음은 어떻게 사용 하 는 지 보 여 줍 니 다. 헤더 파일 은 각각 NSRegularExpression (NSMatching) 과 NSRegularExpression (NSReplacement) 으로 개발 자 들 이 검색 하고 교체 할 수 있 도록 일련의 방법 을 정의 합 니 다.
+ (NSString *)escapedPatternForString:(NSString *)string;

정규 표현 식 의 일치
일치 하 는 방법 은 모두 NSRegularExpression (NSMatching) 분류 에 명시 되 어 있다.
@interface NSRegularExpression (NSMatching)

/* 
      ,          options range       string,  block         
*/
- (void)enumerateMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range usingBlock:(void (NS_NOESCAPE ^)(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL *stop))block;
/*
    options range       string,                 
*/
- (NSArray *)matchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;
/*
             
*/
- (NSUInteger)numberOfMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;

/*
           ,NSTextCheckingResult  
*/
- (nullable NSTextCheckingResult *)firstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;
/*
            NSRange    
*/
- (NSRange)rangeOfFirstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;
@end


NSMatchingOptions 매 거 진
typedef NS_OPTIONS(NSUInteger, NSMatchingOptions) {
   NSMatchingReportProgress         = 1 << 0, //             block  
   NSMatchingReportCompletion       = 1 << 1, //               block
   NSMatchingAnchored               = 1 << 2, //             
   NSMatchingWithTransparentBounds  = 1 << 3, //              
   NSMatchingWithoutAnchoringBounds = 1 << 4  //  ^ $          
};

NSMatchingFlags 매 거 진
typedef NS_OPTIONS(NSUInteger, NSMatchingFlags) {
   NSMatchingProgress               = 1 << 0, //               
   NSMatchingCompleted              = 1 << 1, //              
   NSMatchingHitEnd                 = 1 << 2, //                 
   NSMatchingRequiredEnd            = 1 << 3, //                          
   NSMatchingInternalError          = 1 << 4  //                  
};

정규 표현 식 의 교체
원문 에서 규칙 에 맞 는 필드 를 새로운 필드 로 교체 하 는 방법 은 모두 NSRegularExpression (NSReplacement) 분류 에 명시 되 어 있다.

@interface NSRegularExpression (NSReplacement)

/* 
     options    range ,               ,       NSString
*/
- (NSString *)stringByReplacingMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)templ;

/*
                ,       (       )
*/
- (NSUInteger)replaceMatchesInString:(NSMutableString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)templ;

/* 
   string      result + offset       ,    template       (  $0-9 )
*/
- (NSString *)replacementStringForResult:(NSTextCheckingResult *)result inString:(NSString *)string offset:(NSInteger)offset template:(NSString *)templ;

/* 
         ,         . 
*/
+ (NSString *)escapedTemplateForString:(NSString *)string;
@end 

원생 이 복잡 하 다 고 생각하면 github 에 스타 가 많은 것 도 objective - C - Regex - Categories 와 같은 소스 라 이브 러 리 를 열 어 사용 하기 쉽다.

좋은 웹페이지 즐겨찾기