ftp.nice.ch/Attic/openStep/developer/resources/MiscKit.2.0.5.s.gnutar.gz#/MiscKit2/Frameworks/MiscFoundation/MiscString.subproj/NSString+MiscRegex.h

This is NSString+MiscRegex.h in view mode; [Download] [Up]

//
//	NSString+MiscRegex.h -- add regular expression support to NSString
//		Written by Carl Lindberg Copyright (c) 1997 by Carl Lindberg.
//				  Version 1.0   All rights reserved.
//		This notice may not be removed from this source code.
//
//	This object is included in the MiscKit by permission from the author
//	and its use is governed by the MiscKit license, found in the file
//	"LICENSE.rtf" in the MiscKit distribution.  Please refer to that file
//	for a list of all applicable permissions and restrictions.
//	


#import <Foundation/NSString.h>
#import "regexpr.h"
//#import <misckit/regexpr.h>

/*
 * Additional flags you can pass with the options parameter:
 * 
 * MiscFasterSearch will use the fastmap feature of the regexpr package.
 * This will result in faster searches on longer strings, but the overhead
 * may not be worth it with short strings.
 * 
 * MiscUseMatchSubstitutions will turn on special processing on the
 * 'replace string' used in the -stringByReplacingEveryOccurrenceOfRegex...
 * and -stringByReplacingRegex... methods. A string of the form '$<digit>'
 * will be replaced with the text matched by the <digit>'th parenthesized
 * subexpression.  For example, for the regex "aa(b+)", "$1" would be
 * replaced with the string of b's matched by the "b+" part of the regex.
 * "$0" and "&" are special tokens that will be replaced with the entire
 * matched text. Use "$$" and "$&" if you want a literal '$' or '&'.
 */
enum
{
    MiscFasterSearch = 4096,
    MiscUseMatchSubstitutions = 8192
};


extern NSString *MiscRegexException;


/* Keys used for the grep: methods */

extern NSString *MiscBeforePiece;
extern NSString *MiscMiddlePiece;
extern NSString *MiscAfterPiece;
extern NSString *MiscBeforeRangePiece;
extern NSString *MiscMiddleRangePiece;
extern NSString *MiscAfterRangePiece;
extern NSString *MiscSubstringsPiece;
extern NSString *MiscSubrangesPiece;

/* Functions to get regexp_t structures for use in RegexStruct functions */
regexp_t MiscNewRegexStruct(NSString *regexString, unsigned options);
void     MiscFreeRegexStruct(regexp_t pattern);

@class NSDictionary, NSArray;

@interface NSString (MiscRegex)

- (unsigned)numOfRegex:(NSString *)regex options:(unsigned)mask range:(NSRange)range;
- (NSRange)rangeOfRegex:(NSString *)regex options:(unsigned)mask occurrenceNum:(int)n
			range:(NSRange)range;

- grep:(NSString *)regex forPiece:(NSString *)key options:(unsigned)mask occurrenceNum:(int)n;
- (NSDictionary *)grep:(NSString *)regex forPieces:(NSArray *)keys
			options:(unsigned)mask occurrenceNum:(int)n;

- (NSString *)stringByReplacingEveryOccurrenceOfRegex:(NSString *)regex
			withString:(NSString *)aString options:(unsigned)mask range:(NSRange)range;

- (NSString *)stringByReplacingRegex:(NSString*)regex withString:(NSString*)replaceString 
			options:(unsigned)mask occurrenceNum:(int)n range:(NSRange)range;

- (NSArray *)stringsMatchedByRegex:     (NSString *)regex options:(unsigned)mask;
- (NSArray *)rangesMatchedByRegex:      (NSString *)regex options:(unsigned)mask;
- (NSArray *)componentsSeparatedByRegex:(NSString *)regex options:(unsigned)mask;

- (BOOL)isValidRegex;


/*
 * The same methods as above, but taking a precompiled regex structure
 * instead of an NSString.
 */
- (unsigned)numOfRegexStruct:(regexp_t)pattern options:(unsigned)mask range:(NSRange)range;
- (NSRange)rangeOfRegexStruct:(regexp_t)pattern options:(unsigned)mask occurrenceNum:(int)n
			range:(NSRange)range;

- grepRegexStruct:(regexp_t)pattern forPiece:(NSString *)key options:(unsigned)mask
			occurrenceNum:(int)n;
- (NSDictionary *)grepRegexStruct:(regexp_t)pattern forPieces:(NSArray *)keys
			options:(unsigned)mask occurrenceNum:(int)n;

- (NSString *)stringByReplacingEveryOccurrenceOfRegexStruct:(regexp_t)pattern
			withString:(NSString *)aString options:(unsigned)mask range:(NSRange)range;

- (NSString *)stringByReplacingRegexStruct:(regexp_t)pattern
			withString:(NSString*)replaceString
			options:(unsigned)mask occurrenceNum:(int)n range:(NSRange)range;

- (NSArray *)stringsMatchedByRegexStruct:     (regexp_t)pattern options:(unsigned)mask;
- (NSArray *)rangesMatchedByRegexStruct:      (regexp_t)pattern options:(unsigned)mask;
- (NSArray *)componentsSeparatedByRegexStruct:(regexp_t)pattern options:(unsigned)mask;


#ifndef _HEADER_VIEWER_  /* convenience methods */

- (unsigned)numOfRegex:(NSString *)regex;
- (unsigned)numOfRegex:(NSString *)regex options:(unsigned)mask;
- (unsigned)numOfRegex:(NSString *)regex range:(NSRange)range;

- (NSRange)rangeOfRegex:(NSString *)regex;
- (NSRange)rangeOfRegex:(NSString *)regex options:(unsigned)mask;
- (NSRange)rangeOfRegex:(NSString *)regex occurrenceNum:(int)n;
- (NSRange)rangeOfRegex:(NSString *)regex options:(unsigned)mask occurrenceNum:(int)n;
- (NSRange)rangeOfRegex:(NSString *)regex range:(NSRange)range;
- (NSRange)rangeOfRegex:(NSString *)regex options:(unsigned)mask range:(NSRange)range;
- (NSRange)rangeOfRegex:(NSString *)regex occurrenceNum:(int)n range:(NSRange)range;

- (NSDictionary *)grep:(NSString *)regex forPieces:(NSArray *)keys;
- (NSDictionary *)grep:(NSString *)regex forPieces:(NSArray *)keys options:(unsigned)mask;
- (NSDictionary *)grep:(NSString *)regex forPieces:(NSArray *)keys occurrenceNum:(int)n;

- grep:(NSString *)regex forPiece:(NSString *)keys;
- grep:(NSString *)regex forPiece:(NSString *)keys options:(unsigned)mask;
- grep:(NSString *)regex forPiece:(NSString *)keys occurrenceNum:(int)n;

- (NSString *)stringByReplacingEveryOccurrenceOfRegex:(NSString *)regex
		withString:(NSString *)aString;
- (NSString *)stringByReplacingEveryOccurrenceOfRegex:(NSString *)regex
		withString:(NSString *)aString options:(unsigned)mask;
- (NSString *)stringByReplacingEveryOccurrenceOfRegex:(NSString *)regex
		withString:(NSString *)aString range:(NSRange)range;

- (NSString *)stringByReplacingRegex:(NSString*)regex withString:(NSString*)replaceString;
- (NSString *)stringByReplacingRegex:(NSString*)regex withString:(NSString*)replaceString
		options:(unsigned)mask;
- (NSString *)stringByReplacingRegex:(NSString*)regex withString:(NSString*)replaceString
		occurrenceNum:(int)n;
- (NSString *)stringByReplacingRegex:(NSString*)regex withString:(NSString*)replaceString
		options:(unsigned)mask occurrenceNum:(int)n;
- (NSString *)stringByReplacingRegex:(NSString*)regex withString:(NSString*)replaceString
		range:(NSRange)range;
- (NSString *)stringByReplacingRegex:(NSString*)regex withString:(NSString*)replaceString
		options:(unsigned)mask range:(NSRange)range;
- (NSString *)stringByReplacingRegex:(NSString*)regex withString:(NSString*)replaceString
		occurrenceNum:(int)n range:(NSRange)range;

- (NSArray *)stringsMatchedByRegex:(NSString *)regex;
- (NSArray *)rangesMatchedByRegex:(NSString *)regex;
- (NSArray *)componentsSeparatedByRegex:(NSString *)regex;

- (unsigned)numOfRegexStruct:(regexp_t)pattern;
- (unsigned)numOfRegexStruct:(regexp_t)pattern options:(unsigned)mask;
- (unsigned)numOfRegexStruct:(regexp_t)pattern range:(NSRange)range;

- (NSRange)rangeOfRegexStruct:(regexp_t)pattern;
- (NSRange)rangeOfRegexStruct:(regexp_t)pattern options:(unsigned)mask;
- (NSRange)rangeOfRegexStruct:(regexp_t)pattern occurrenceNum:(int)n;
- (NSRange)rangeOfRegexStruct:(regexp_t)pattern options:(unsigned)mask occurrenceNum:(int)n;
- (NSRange)rangeOfRegexStruct:(regexp_t)pattern range:(NSRange)range;
- (NSRange)rangeOfRegexStruct:(regexp_t)pattern options:(unsigned)mask range:(NSRange)range;
- (NSRange)rangeOfRegexStruct:(regexp_t)pattern occurrenceNum:(int)n range:(NSRange)range;

- (NSDictionary *)grepRegexStruct:(regexp_t)pattern forPieces:(NSArray *)keys;
- (NSDictionary *)grepRegexStruct:(regexp_t)pattern forPieces:(NSArray *)keys
		options:(unsigned)mask;
- (NSDictionary *)grepRegexStruct:(regexp_t)pattern forPieces:(NSArray *)keys
		occurrenceNum:(int)n;

- grepRegexStruct:(regexp_t)pattern forPiece:(NSString *)keys;
- grepRegexStruct:(regexp_t)pattern forPiece:(NSString *)keys options:(unsigned)mask;
- grepRegexStruct:(regexp_t)pattern forPiece:(NSString *)keys occurrenceNum:(int)n;

- (NSString *)stringByReplacingEveryOccurrenceOfRegexStruct:(regexp_t)pattern
		withString:(NSString *)aString;
- (NSString *)stringByReplacingEveryOccurrenceOfRegexStruct:(regexp_t)pattern
		withString:(NSString *)aString options:(unsigned)mask;
- (NSString *)stringByReplacingEveryOccurrenceOfRegexStruct:(regexp_t)pattern
		withString:(NSString *)aString range:(NSRange)range;

- (NSString *)stringByReplacingRegexStruct:(regexp_t)pattern
		withString:(NSString*)replaceString;
- (NSString *)stringByReplacingRegexStruct:(regexp_t)pattern
		withString:(NSString*)replaceString options:(unsigned)mask;
- (NSString *)stringByReplacingRegexStruct:(regexp_t)pattern
		withString:(NSString*)replaceString occurrenceNum:(int)n;
- (NSString *)stringByReplacingRegexStruct:(regexp_t)pattern
		withString:(NSString*)replaceString options:(unsigned)mask occurrenceNum:(int)n;
- (NSString *)stringByReplacingRegexStruct:(regexp_t)pattern
		withString:(NSString*)replaceString range:(NSRange)range;
- (NSString *)stringByReplacingRegexStruct:(regexp_t)pattern
		withString:(NSString *)replaceString options:(unsigned)mask range:(NSRange)range;
- (NSString *)stringByReplacingRegexStruct:(regexp_t)pattern
		withString:(NSString *)replaceString occurrenceNum:(int)n range:(NSRange)range;

- (NSArray *)stringsMatchedByRegexStruct:(regexp_t)pattern;
- (NSArray *)rangesMatchedByRegexStruct:(regexp_t)pattern;
- (NSArray *)componentsSeparatedByRegexStruct:(regexp_t)pattern;

#endif

@end


@interface NSMutableString (MiscRegex)

- (void)replaceRegex:(NSString *)regex withString:(NSString *)replaceString 
		options:(unsigned)mask occurrenceNum:(int)n range:(NSRange)range;

- (void)replaceEveryOccurrenceOfRegexStruct:(regexp_t)pattern
		withString:(NSString *)replaceString options:(unsigned)mask range:(NSRange)range;

- (void)replaceRegexStruct:(regexp_t)pattern withString:(NSString *)replaceString
		options:(unsigned)mask occurrenceNum:(int)n range:(NSRange)range;

- (void)replaceEveryOccurrenceOfRegex:(NSString *)regex withString:(NSString *)replaceString 
		options:(unsigned)mask range:(NSRange)range;


#ifndef _HEADER_VIEWER_  /* convenience methods */

- (void)replaceRegex:(NSString *)regex withString:(NSString *)replaceString;
- (void)replaceRegex:(NSString *)regex withString:(NSString *)replaceString
		options:(unsigned)mask;
- (void)replaceRegex:(NSString *)regex withString:(NSString *)replaceString
		occurrenceNum:(int)n;
- (void)replaceRegex:(NSString *)regex withString:(NSString *)replaceString
		options:(unsigned)mask occurrenceNum:(int)n;
- (void)replaceRegex:(NSString *)regex withString:(NSString *)replaceString
		range:(NSRange)range;
- (void)replaceRegex:(NSString *)regex withString:(NSString *)replaceString
		options:(unsigned)mask range:(NSRange)range;
- (void)replaceRegex:(NSString *)regex withString:(NSString *)replaceString
		occurrenceNum:(int)n range:(NSRange)range;

- (void)replaceRegexStruct:(regexp_t)pattern withString:(NSString *)replaceString;
- (void)replaceRegexStruct:(regexp_t)pattern withString:(NSString *)replaceString
		options:(unsigned)mask;
- (void)replaceRegexStruct:(regexp_t)pattern withString:(NSString *)replaceString
		occurrenceNum:(int)n;
- (void)replaceRegexStruct:(regexp_t)pattern withString:(NSString *)replaceString
		options:(unsigned)mask occurrenceNum:(int)n;
- (void)replaceRegexStruct:(regexp_t)pattern withString:(NSString *)replaceString
		range:(NSRange)range;
- (void)replaceRegexStruct:(regexp_t)pattern withString:(NSString *)replaceString
		options:(unsigned)mask range:(NSRange)range;
- (void)replaceRegexStruct:(regexp_t)pattern withString:(NSString *)replaceString
		occurrenceNum:(int)n range:(NSRange)range;


- (void)replaceEveryOccurrenceOfRegex:(NSString *)regex withString:(NSString *)replaceString;
- (void)replaceEveryOccurrenceOfRegex:(NSString *)regex withString:(NSString *)replaceString
		options:(unsigned)mask;
- (void)replaceEveryOccurrenceOfRegex:(NSString *)regex withString:(NSString *)replaceString
		range:(NSRange)range;

- (void)replaceEveryOccurrenceOfRegexStruct:(regexp_t)pattern
		withString:(NSString *)replaceString;
- (void)replaceEveryOccurrenceOfRegexStruct:(regexp_t)pattern
		withString:(NSString *)replaceString options:(unsigned)mask;
- (void)replaceEveryOccurrenceOfRegexStruct:(regexp_t)pattern
		withString:(NSString *)replaceString range:(NSRange)range;

#endif

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.