簡単な使い方
簡単な使い方
下記に文字列中の正規表現にマッチした部分を順番にログ出力する典型的なコードを示します。
(OgreKitプロジェクトのRegular Expression Testも参照)
#import <OgreKit/OgreKit.h>
...中略...
// 正規表現オブジェクト
OGRegularExpression *regex;
regex = [OGRegularExpression regularExpressionWithString:@"a[^a]*a"];
// マッチ結果の列挙子
NSEnumerator *enumerator;
enumerator = [regex matchEnumeratorInString:@"alphabetagammadelta"];
// マッチ結果
OGRegularExpressionMatch *match;
while ((match = [enumerator nextObject]) != nil) {
// 順番にマッチ結果を得る
NSLog(@"%@", [match matchedString]);
}
// 表示結果:
// alpha
// aga
// adelta
注意点
enumeratorにつきもののことですが、検索中は検索対象文字列の内容を変更しないで下さい。
行頭行末マッチ(^や$などを用いた検索)を行うときは改行コードが \n (内的には LF)である必要があります。(対処方法は「改行コードを判定・統一する」を参照)
正規表現オブジェクトの生成時や検索時に使用できるのオプション等については「OGRegularExpression.h」を参照して下さい。
使用できる正規表現はOnigurumaのドキュメント「RE」を参照して下さい。
デフォルトのエスケープ文字(デフォルトでは@"\\")を変更する場合はOGRegularExpressionの
+(void)setDefaultEscapeCharactor:(NSString*)aCharacter
を使用して下さい。
例えば、ありそうな場合でいえば、GUI中の¥マーク (= "\\") に変更したいときは
[OGRegularExpression setDefaultEscapeCharactor:[NSString stringWithCString:"\\"]]
のようになります。
([OGRegularExpression setDefaultEscapeCharactor:OgreGUIYenCharacter]でも同じ意味になります)
デフォルトの正規表現構文(デフォルトではRuby)を変更する場合はOGRegularExpressionの
+(void)setDefaultSyntax:(OgreSyntax)aSyntax
を使用して下さい。
例えば、単純に一致するかどうかを調べる構文をデフォルトにする場合は
[OGRegularExpression setDefaultSyntax:OgreSimpleMatchingSyntax]
のようになります。なお、この構文でOgreDelimitByWhitespaceOptionを指定するとマッチングを行う単語を空白文字で区切ることができます。例えば、
[OGRegularExpression regularExpressionWithString:@"foo bar"
options:OgreDelimitByWhitespaceOption]
は @"(foo)|(bar)" で生成された正規表現オブジェクトのように振る舞います。
文字列を正規表現にマッチした部分で分割する場合は
-(NSArray*)splitString:(NSString*)aStringなど
が便利です。使用例(Regular Expression Test 参照):
OGRegularExpression *delimRegex;
delimRegex = [OGRegularExpression regularExpressionWithString:@"\\s*,\\s*"];
NSLog(@"%@", [[delimRegex splitString:@"36.5C, 3.8C, -195.8C"] description]);
// 表示結果: ("36.5C", "3.8C", "-195.8
2. 文字列中の正規表現にマッチした部分を順番に得る