using System.Collections.Generic;
using System.Text.RegularExpressions;
public class DocProcessor
List<string> _kappa = new List<string>();
List<string> _omicron = new List<string>();
List<string> _upsilon = new List<string>();
List<int> _kappaIdx = new List<int>();
List<int> _omicronIdx = new List<int>();
List<int> _upsilonIdx = new List<int>();
public string[] omicron {
return _omicron.ToArray();
public string[] upsilon {
return _upsilon.ToArray();
return _kappaIdx .ToArray();
public int[] omicronIdx {
return _omicronIdx .ToArray();
public int[] upsilonIdx {
return _upsilonIdx .ToArray();
public void ProcessDocument( string doc )
var docSplit = doc.Split(new [] {"\r\n", "\r", "\n"}, StringSplitOptions.None);
var reOmicron = new Regex( "^omicron\\b", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Compiled );
var reKappa = new Regex( "^kappa\\b", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Compiled );
var reUpsilon = new Regex( "^upsilon\\b", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Compiled );
var spaces = new char[]{' ',' '};
foreach(var line in docSplit)
var lline = line.TrimStart( spaces );
if ( reOmicron.IsMatch( lline ) )
_omicronIdx.Add( line_index );
if ( reKappa.IsMatch( lline ) )
_kappaIdx.Add( line_index );
if ( reUpsilon.IsMatch( lline ) )
_upsilonIdx.Add( line_index );