簡単な使い方

 

 下記に文字列中の正規表現にマッチした部分を順番にログ出力する典型的なコードを示します。

(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



注意点

  1. 箇条書き項目 enumeratorにつきもののことですが、検索中は検索対象文字列の内容を変更しないで下さい。

  2. 箇条書き項目 行頭行末マッチ(^や$などを用いた検索)を行うときは改行コードが \n (内的には LF)である必要があります。(対処方法は「改行コードを判定・統一する」を参照)

  3. 箇条書き項目 正規表現オブジェクトの生成時や検索時に使用できるのオプション等については「OGRegularExpression.h」を参照して下さい。
    使用できる正規表現はOnigurumaのドキュメント「RE」を参照して下さい。

  4. 箇条書き項目 デフォルトのエスケープ文字(デフォルトでは@"\\")を変更する場合はOGRegularExpressionの
      +(void)setDefaultEscapeCharactor:(NSString*)aCharacter
    を使用して下さい。
    例えば、ありそうな場合でいえば、GUI中の¥マーク (= "\\") に変更したいときは
      [OGRegularExpression setDefaultEscapeCharactor:[NSString stringWithCString:"\\"]]
    のようになります。
    [OGRegularExpression setDefaultEscapeCharactor:OgreGUIYenCharacter]でも同じ意味になります)

  5. 箇条書き項目 デフォルトの正規表現構文(デフォルトではRuby)を変更する場合はOGRegularExpressionの
      +(void)setDefaultSyntax:(OgreSyntax)aSyntax
    を使用して下さい。
    例えば、単純に一致するかどうかを調べる構文をデフォルトにする場合は
      [OGRegularExpression setDefaultSyntax:OgreSimpleMatchingSyntax]
    のようになります。なお、この構文でOgreDelimitByWhitespaceOptionを指定するとマッチングを行う単語を空白文字で区切ることができます。例えば、
      [OGRegularExpression regularExpressionWithString:@"foo bar"
        options:OgreDelimitByWhitespaceOption]
    は @"(foo)|(bar)" で生成された正規表現オブジェクトのように振る舞います。

  6. 箇条書き項目 文字列を正規表現にマッチした部分で分割する場合は
      -(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. 文字列中の正規表現にマッチした部分を順番に得る