Я пытаюсь найти подстроку от начала строки до точки, которая имеет escape-последовательность "\r\n\r\n"
мое регулярное выражение Regex completeCall = new Regex(@"^.+?\r\n\r\n", RegexOptions.Compiled);
, оно прекрасно работает, пока у вас есть только строки типа 123\r\n\r\n
, однако, как только вы иметь шаблон 123\r\n 456\r\n\r\n
шаблон больше не соответствует.
Любой совет, что я делаю не так?
Regex completeCall = new Regex(@"^.+?\r\n\r\n", RegexOptions.Compiled);
Regex junkLine = new Regex(@"^\D", RegexOptions.Compiled);
private void ClientThread()
{
StringBuilder stringBuffer = new StringBuilder();
(...)
while(true)
{
(...)
Match match = completeCall.Match(stringBuffer.ToString());
while (Match.Success) //once stringBuffer has somthing like "123\r\n 456\r\n\r\n" Match.Success always returns false.
{
if (junkLine.IsMatch(match.Value))
{
(...)
}
else
{
(...)
}
stringBuffer.Remove(0, match.Length); // remove the processed string
match = completeCall.Match(stringBuffer.ToString()); // check to see if more than 1 call happened while the thread was sleeping.
}
Thread.Sleep(1000);
}
Изменить здесь данные, которые вызывают его сбой (\ r \ n переведены в настоящие разрывы строк)
691 25 2102 7:29 1:12 3585551234 A --Matches fine
692 27 2102 7:29 0:39 2155555432 A --Regex will not match this line when it comes up.
* 2190 0:31 ABN
693 28 2102 7:30 0:23 3055551212 A --never gets here because it is stuck on the previous line.