Поиск подстроки с помощью регулярного выражения - C# (188871)
Формулировка задачи:
Дан текстовый файл, имеющий структуру "Фамилия И.О. - улица - номер дома - квартира - номер телефона". Вывести фамилии всех абонентов проживающих на улице Реввоенсовета. Помогите найти ошибку в коде.
textBox1.Text = "Не определено";
openFileDialog1.Filter = "txt files (*.txt)|*txt";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamReader f = new StreamReader(openFileDialog1.FileName, Encoding.GetEncoding(1251)) ;
Regex r = new Regex(@"^([А-Я][а-я]+)\s+([А-Я])\.\s*([А-Я])\.\s+(\d+)\s+(\d+)$");
Regex r1 = new Regex("Реввоенсовет");
string s;
while ((s = f.ReadLine())!= null)
{
Match match = r.Match(s);
Match match1 = r1.Match(s);
if (match.Success && match1.Success)
{
textBox1.Text += match.Groups[2].Value + "\n";
}
}
if (textBox1.Text == "") textBox1.Text = "Не найдено";
}
else textBox1.Text = "Файл не может быть открыт";Решение задачи: «Поиск подстроки с помощью регулярного выражения»
textual
Листинг программы
namespace ConsoleApplication56
{
class Program
{
static void Main(string[] args)
{
List<string> Correct = new List<string>();
string[] strs = new string[] { "Фамилия И.О. - улица - номер дома - квартира - номер телефона", "Иванов И.О. - Переулок Реввоенсовета малый - номер дома - квартира - номер телефона", "Фамилия И.О. - улица - номер дома - квартира - номер телефона" };
//strs = File.ReadAllLines(filename);
foreach (string str in strs)
{
var mt = Regex.Match(str, @"[^-]*(?=.*?Реввоенсовета)");
if(mt.Success) Correct.Add(mt.Value);
}
foreach (var v in Correct) Console.WriteLine(v);
Console.Read();
}
}
}