private Scan ( string text, int index, int beglimit, int endlimit ) : int | ||
text | string | |
index | int | |
beglimit | int | |
endlimit | int | |
return | int |
protected override bool FindFirstChar() { int i; String set; if (0 != (runanchors & (RegexFCD.Beginning | RegexFCD.Start | RegexFCD.EndZ | RegexFCD.End))) { if (!runcode._rightToLeft) { if ((0 != (runanchors & RegexFCD.Beginning) && runtextpos > runtextbeg) || (0 != (runanchors & RegexFCD.Start) && runtextpos > runtextstart)) { runtextpos = runtextend; return(false); } if (0 != (runanchors & RegexFCD.EndZ) && runtextpos < runtextend - 1) { runtextpos = runtextend - 1; } else if (0 != (runanchors & RegexFCD.End) && runtextpos < runtextend) { runtextpos = runtextend; } } else { if ((0 != (runanchors & RegexFCD.End) && runtextpos < runtextend) || (0 != (runanchors & RegexFCD.EndZ) && (runtextpos < runtextend - 1 || (runtextpos == runtextend - 1 && CharAt(runtextpos) != '\n'))) || (0 != (runanchors & RegexFCD.Start) && runtextpos < runtextstart)) { runtextpos = runtextbeg; return(false); } if (0 != (runanchors & RegexFCD.Beginning) && runtextpos > runtextbeg) { runtextpos = runtextbeg; } } if (runbmPrefix != null) { return(runbmPrefix.IsMatch(runtext, runtextpos, runtextbeg, runtextend)); } } else if (runbmPrefix != null) { runtextpos = runbmPrefix.Scan(runtext, runtextpos, runtextbeg, runtextend); if (runtextpos == -1) { runtextpos = (runcode._rightToLeft ? runtextbeg : runtextend); return(false); } return(true); } if (runfcPrefix == null) { return(true); } runrtl = runcode._rightToLeft; runci = runfcPrefix.CaseInsensitive; set = runfcPrefix.Prefix; if (RegexCharClass.IsSingleton(set)) { char ch = RegexCharClass.SingletonChar(set); for (i = Forwardchars(); i > 0; i--) { if (ch == Forwardcharnext()) { Backwardnext(); return(true); } } } else { for (i = Forwardchars(); i > 0; i--) { if (RegexCharClass.CharInSet(Forwardcharnext(), set, String.Empty)) { Backwardnext(); return(true); } } } return(false); }
protected override bool FindFirstChar() { int i; String set; if (0 != (_runanchors & (RegexFCD.Beginning | RegexFCD.Start | RegexFCD.EndZ | RegexFCD.End))) { if (!_runcode._rightToLeft) { if ((0 != (_runanchors & RegexFCD.Beginning) && _runtextpos > _runtextbeg) || (0 != (_runanchors & RegexFCD.Start) && _runtextpos > _runtextstart)) { _runtextpos = _runtextend; return(false); } if (0 != (_runanchors & RegexFCD.EndZ) && _runtextpos < _runtextend - 1) { _runtextpos = _runtextend - 1; } else if (0 != (_runanchors & RegexFCD.End) && _runtextpos < _runtextend) { _runtextpos = _runtextend; } } else { if ((0 != (_runanchors & RegexFCD.End) && _runtextpos < _runtextend) || (0 != (_runanchors & RegexFCD.EndZ) && (_runtextpos < _runtextend - 1 || (_runtextpos == _runtextend - 1 && CharAt(_runtextpos) != '\n'))) || (0 != (_runanchors & RegexFCD.Start) && _runtextpos < _runtextstart)) { _runtextpos = _runtextbeg; return(false); } if (0 != (_runanchors & RegexFCD.Beginning) && _runtextpos > _runtextbeg) { _runtextpos = _runtextbeg; } } if (_runbmPrefix != null) { return(_runbmPrefix.IsMatch(_runtext, _runtextpos, _runtextbeg, _runtextend)); } return(true); // found a valid start or end anchor } else if (_runbmPrefix != null) { _runtextpos = _runbmPrefix.Scan(_runtext, _runtextpos, _runtextbeg, _runtextend); if (_runtextpos == -1) { _runtextpos = (_runcode._rightToLeft ? _runtextbeg : _runtextend); return(false); } return(true); } else if (_runfcPrefix == null) { return(true); } _runrtl = _runcode._rightToLeft; _runci = _runfcPrefix.CaseInsensitive; set = _runfcPrefix.Prefix; if (RegexCharClass.IsSingleton(set)) { char ch = RegexCharClass.SingletonChar(set); for (i = Forwardchars(); i > 0; i--) { if (ch == Forwardcharnext()) { Backwardnext(); return(true); } } } else { for (i = Forwardchars(); i > 0; i--) { if (RegexCharClass.CharInClass(Forwardcharnext(), set)) { Backwardnext(); return(true); } } } return(false); }