internal RefMatchEnumerator(InternalRegex regex, ReadOnlySpan <char> subject, PcreMatchSettings settings) { _regex = regex; _subject = subject; _settings = settings; _match = default; }
private IEnumerable <PcreMatch> MatchesIterator(string subject, PcreMatchSettings settings) { using (var context = settings.CreateMatchContext(subject)) { var result = ExecuteMatch(context); if (result.ResultCode != MatchResultCode.Success) { yield break; } var match = new PcreMatch(result); yield return(match); var options = context.AdditionalOptions; while (true) { context.StartIndex = match.GetStartOfNextMatchIndex(); context.AdditionalOptions = options | (match.Length == 0 ? PatternOptions.NotEmptyAtStart : PatternOptions.None); result = ExecuteMatch(context); if (result.ResultCode != MatchResultCode.Success) { yield break; } match = new PcreMatch(result); yield return(match); } } }
private IEnumerable <PcreMatch> MatchesIterator(string subject, PcreMatchSettings settings) { var match = InternalRegex.Match(subject, settings, settings.StartIndex, settings.AdditionalOptions.ToPatternOptions()); if (!match.Success) { yield break; } yield return(match); var baseOptions = settings.AdditionalOptions.ToPatternOptions() | PcreConstants.NO_UTF_CHECK; while (true) { var startIndex = match.GetStartOfNextMatchIndex(); var options = baseOptions | (match.Length == 0 ? PcreConstants.NOTEMPTY_ATSTART : 0); match = InternalRegex.Match(subject, settings, startIndex, options); if (!match.Success) { yield break; } yield return(match); } }
public RefMatchEnumerable Matches(ReadOnlySpan <char> subject, int startIndex, PcreRefCalloutFunc onCallout) { if (subject == null) { throw new ArgumentNullException(nameof(subject)); } return(Matches(subject, PcreMatchSettings.GetSettings(startIndex, PcreMatchOptions.None, onCallout))); }
public IEnumerable <PcreMatch> Matches(string subject, int startIndex, Func <PcreCallout, PcreCalloutResult> onCallout) { if (subject == null) { throw new ArgumentNullException(nameof(subject)); } return(Matches(subject, PcreMatchSettings.GetSettings(startIndex, PcreMatchOptions.None, onCallout))); }
public RefMatchEnumerable Matches(ReadOnlySpan <char> subject, PcreMatchSettings settings) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (settings.StartIndex < 0 || settings.StartIndex > subject.Length) { throw new IndexOutOfRangeException("Invalid StartIndex value"); } return(new RefMatchEnumerable(InternalRegex, subject, settings)); }
public PcreMatch Match(string subject, int startIndex, PcreMatchOptions options, Func <PcreCallout, PcreCalloutResult> onCallout) { var settings = new PcreMatchSettings { StartIndex = startIndex, AdditionalOptions = options }; if (onCallout != null) { settings.OnCallout += onCallout; } return(Match(subject, settings)); }
public PcreRefMatch Match(ReadOnlySpan <char> subject, PcreMatchSettings settings) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (settings.StartIndex < 0 || settings.StartIndex > subject.Length) { throw new IndexOutOfRangeException("Invalid StartIndex value"); } var match = InternalRegex.CreateRefMatch(); match.FirstMatch(subject, settings, settings.StartIndex); return(match); }
public IEnumerable <PcreMatch> Matches(string subject, PcreMatchSettings settings) { if (subject == null) { throw new ArgumentNullException("subject"); } if (settings == null) { throw new ArgumentNullException("settings"); } if (settings.StartIndex < 0 || settings.StartIndex > subject.Length) { throw new IndexOutOfRangeException("Invalid StartIndex value"); } return(MatchesIterator(subject, settings)); }
public IEnumerable <PcreMatch> Matches(string subject, int startIndex, Func <PcreCallout, PcreCalloutResult> onCallout) { if (subject == null) { throw new ArgumentNullException("subject"); } var settings = new PcreMatchSettings { StartIndex = startIndex }; if (onCallout != null) { settings.OnCallout += onCallout; } return(Matches(subject, settings)); }
public PcreMatch Match(string subject, PcreMatchSettings settings) { if (subject == null) { throw new ArgumentNullException(nameof(subject)); } if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (settings.StartIndex < 0 || settings.StartIndex > subject.Length) { throw new IndexOutOfRangeException("Invalid StartIndex value"); } return(InternalRegex.Match(subject, settings, settings.StartIndex, settings.AdditionalOptions.ToPatternOptions())); }
public PcreMatch Match(string subject, PcreMatchSettings settings) { if (subject == null) { throw new ArgumentNullException("subject"); } if (settings == null) { throw new ArgumentNullException("settings"); } if (settings.StartIndex < 0 || settings.StartIndex > subject.Length) { throw new IndexOutOfRangeException("Invalid StartIndex value"); } using (var context = settings.CreateMatchContext(subject)) { return(new PcreMatch(ExecuteMatch(context))); } }
public PcreRefMatch Match(ReadOnlySpan <char> subject, int startIndex, PcreMatchOptions options, PcreRefCalloutFunc onCallout) => Match(subject, PcreMatchSettings.GetSettings(startIndex, options, onCallout));
public PcreMatch Match(string subject, int startIndex, PcreMatchOptions options, Func <PcreCallout, PcreCalloutResult> onCallout) => Match(subject, PcreMatchSettings.GetSettings(startIndex, options, onCallout));
internal RefMatchEnumerable(InternalRegex regex, ReadOnlySpan <char> subject, PcreMatchSettings settings) { _regex = regex; _subject = subject; _settings = settings; }