Используя RegExp, вы можете действовать двумя способами, в зависимости от вашего источника ввода
Пример 1
Предполагая, что вы прочитали свой источник и сохранили одну строку в векторе или списке:
string[] input = { "abc = tamaz feeo maa roo key gaera porla", "Xyz = gippaza eka jaguar ammaz te sanna." };
Regex mySplit = new Regex("(\\w+)\\s*=\\s*((\\w+).*)");
List<word> mylist = new List<word>();
foreach (string wordDef in input)
{
Match myMatch = mySplit.Match(wordDef);
word myWord;
myWord.Word = myMatch.Groups[1].Captures[0].Value;
myWord.Definition = myMatch.Groups[2].Captures[0].Value;
mylist.Add(myWord);
}
Пример 2
Предполагая, что вы прочитали свой источник в одной переменной (и любая строка заканчивается символом разрыва строки '\ n'), вы можете использовать то же регулярное выражение "(\ w +) \ s * = \ s * ((\ w +). *) "но таким образом
string inputs = "abc = tamaz feeo maa roo, key gaera porla\r\nXyz = gippaza eka jaguar; ammaz: te sanna.";
MatchCollection myMatches = mySplit.Matches(inputs);
foreach (Match singleMatch in myMatches)
{
word myWord;
myWord.Word = singleMatch.Groups[1].Captures[0].Value;
myWord.Definition = singleMatch.Groups[2].Captures[0].Value;
mylist.Add(myWord);
}
Строки, которые соответствуют или не соответствуют регулярному выражению " (\ w +) \ s = \ s * ((\ w +). ) ":
- "abc = tamaz feeo maa roo key gaera porla, qsdsdsqdqsd \ n" -> Match!
- "Xyz = gippaza eka jaguar ammaz te sanna. sdq = sqds \ n" -> Match! Вы также можете вставить описание, включающее также пробелы.
- "qsdqsd = \ nsdsdsd \ n" -> Соответствует многопоточной паре тоже !
- "sdqsd = \ n" -> НЕ СОГЛАСОВАТЬ ! (без описания)
- "= sdq sqdqsd. \ N" -> НЕ СОГЛАСОВАТЬ ! (не хватает слов)