/// <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)); } }
/// <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)); } }
/// <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)); } }
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; }
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); }