예제 #1
0
 /// <summary>
 /// 指定した入力文字列内で、指定した正規表現パターンと一致する箇所が見つかるかどうかを返します。
 /// </summary>
 /// <param name="input">検索対象とする入力文字列</param>
 /// <param name="pattern">正規表現パターン文字列</param>
 /// <param name="options">正規表現オプション</param>
 /// <returns>true:見つかった、false:見つからなかった</returns>
 /// <remarks>
 /// 正規表現にエラーがある場合は、ArgumentExceptionないしそのサブクラスの例外が投げられます。
 /// bregonig.dllの読み込みに失敗した場合は、DllNotFoundException(dllファイルがない)/TypeLoadException(BoMatchメソッドがない)/BadImageFormatException(x86/x64不一致)などの例外が投げられます。
 /// </remarks>
 public static bool IsMatch(string input, string pattern, string options = null)
 {
     using (BregonigRegex regex = new BregonigRegex(pattern, options))
     {
         return(regex.IsMatch(input));
     }
 }
예제 #2
0
 /// <summary>
 /// 指定した入力文字列内で指定した正規表現パターンと一致した箇所を、指定した置換文字列に置換します。
 /// </summary>
 /// <param name="input">検索対象とする入力文字列</param>
 /// <param name="pattern">正規表現パターン文字列</param>
 /// <param name="replacement">置換文字列</param>
 /// <param name="options">正規表現オプション:"g"(グローバルな置換)指定時は一致箇所すべて、"g"指定なしの場合は最初に一致した1箇所のみを、置換します)</param>
 /// <returns>置換結果文字列。正規表現パターンと一致した箇所がなかった場合は入力文字列と同一の文字列</returns>
 /// <remarks>
 /// 正規表現や置換パターンにエラーがある場合は、ArgumentExceptionないしそのサブクラスの例外が投げられます。
 /// bregonig.dllの読み込みに失敗した場合は、DllNotFoundException(dllファイルがない)/TypeLoadException(BoMatchメソッドがない)/BadImageFormatException(x86/x64不一致)などの例外が投げられます。
 /// </remarks>
 public static string Replace(string input, string pattern, string replacement, string options = null)
 {
     using (BregonigRegex regex = new BregonigRegex(pattern, options))
     {
         return(regex.Replace(input, replacement));
     }
 }
예제 #3
0
 /// <summary>
 /// 指定した入力文字列内で、指定した正規表現パターンと一致する箇所を検索しすべて列挙します。
 /// </summary>
 /// <param name="input">検索対象とする入力文字列</param>
 /// <param name="pattern">正規表現パターン文字列</param>
 /// <param name="options">正規表現オプション</param>
 /// <returns>検索によって見つかった Matched オブジェクトの列挙</returns>
 /// <remarks>
 /// 正規表現にエラーがある場合は、ArgumentExceptionないしそのサブクラスの例外が投げられます。
 /// bregonig.dllの読み込みに失敗した場合は、DllNotFoundException(dllファイルがない)/TypeLoadException(BoMatchメソッドがない)/BadImageFormatException(x86/x64不一致)などの例外が投げられます。
 /// </remarks>
 public static IEnumerable <Matched> Matches(string input, string pattern, string options = null)
 {
     using (BregonigRegex regex = new BregonigRegex(pattern, options))
     {
         return(regex.Matches(input));
     }
 }
예제 #4
0
            protected int targetend;       // grep実行時に指定されていた検索終了文字位置

            /// <summary>
            /// 新しいインスタンスを初期化します。(BregonigRegex内部用、独自に作成したコードから直接使用するものではありません)
            /// </summary>
            internal Matched(Group[] groups, BregonigRegex regex, int targetstart, int targetend)
            {
                this.Groups      = new ReadOnlyCollection <Group>(groups);
                this.regex       = regex;
                this.input       = regex.input;
                this.targetstart = targetstart;
                this.targetend   = targetend;
            }
예제 #5
0
            public int    nparens;   // パターンの中の() の数。 $1,$2,...,$n を調べるときに使用

            /// <summary>
            /// 引数で指定された添字のGroupオブジェクトを生成します。
            /// </summary>
            /// <param name="i">グループ添字:[0]=マッチ箇所全体、[1]~[n]=グループ($1-$n)</param>
            /// <param name="regex">正規表現オブジェクト</param>
            /// <returns>Groupオブジェクト。ただし該当Groupがキャプチャされていない場合はnull</returns>
            public Group CreateGroup(int i, BregonigRegex regex)
            {
                IntPtr startp = Marshal.ReadIntPtr(this.startpp, i * IntPtr.Size);
                IntPtr endp   = Marshal.ReadIntPtr(this.endpp, i * IntPtr.Size);
                Group  g      = null;

                if (startp != IntPtr.Zero)
                {
                    g = new Group(regex.input,
                                  (int)((startp.ToInt64() - regex.strstartp.ToInt64()) / sizeof(char)),
                                  (int)((endp.ToInt64() - startp.ToInt64()) / sizeof(char)));
                }
                return(g);
            }