| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 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;		}	}}
 |