123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using System;
- using System.Text.RegularExpressions;
- namespace SharpCifs.Util.Sharpen
- {
- internal class Matcher
- {
- private int _current;
- private MatchCollection _matches;
- private Regex _regex;
- private string _str;
- internal Matcher(Regex regex, string str)
- {
- this._regex = regex;
- this._str = str;
- }
- public int End()
- {
- if ((_matches == null) || (_current >= _matches.Count))
- {
- throw new InvalidOperationException();
- }
- return (_matches[_current].Index + _matches[_current].Length);
- }
- public bool Find()
- {
- if (_matches == null)
- {
- _matches = _regex.Matches(_str);
- _current = 0;
- }
- return (_current < _matches.Count);
- }
- public bool Find(int index)
- {
- _matches = _regex.Matches(_str, index);
- _current = 0;
- return (_matches.Count > 0);
- }
- public string Group(int n)
- {
- if ((_matches == null) || (_current >= _matches.Count))
- {
- throw new InvalidOperationException();
- }
- Group grp = _matches[_current].Groups[n];
- return grp.Success ? grp.Value : null;
- }
- public bool Matches()
- {
- _matches = null;
- return Find();
- }
- public string ReplaceFirst(string txt)
- {
- return _regex.Replace(_str, txt, 1);
- }
- public Matcher Reset(CharSequence str)
- {
- return Reset(str.ToString());
- }
- public Matcher Reset(string str)
- {
- _matches = null;
- this._str = str;
- return this;
- }
- public int Start()
- {
- if ((_matches == null) || (_current >= _matches.Count))
- {
- throw new InvalidOperationException();
- }
- return _matches[_current].Index;
- }
- }
- }
|