C#에서 텔넷 클라이언트를 작성 중이며 구문 분석해야 할 부분은 ANSI/VT100 이스케이프 시퀀스입니다. 구체적으로 색상 및 형식 지정에 사용되는 것 (here)입니다. 내가 가진왜이 정규 표현식이 더 빠릅니까?
한 가지 방법은 하나를 모든 코드를 찾아 제거하는 것입니다, 그래서 필요하다면 나는 서식없이 텍스트를 렌더링 할 수있다 : 나는 정규 표현식에 새로운 해요
public static string StripStringFormating(string formattedString)
{
if (rTest.IsMatch(formattedString))
return rTest.Replace(formattedString, string.Empty);
else
return formattedString;
}
및 I가 제안되었다
static Regex rText = new Regex(@"\e\[[\d;]+m", RegexOptions.Compiled);
그러나 서버에서 오류로 인해 이스케이프 코드가 불완전한 경우이 작업은 실패합니다. 그럼이 제안했지만, 내 친구가 느려질 수 있습니다 경고 (이 또 다른 조건 나중에 건너 수 (Z)과 일치) :
static Regex rTest =
new Regex(@"(\e(\[([\d;]*[mz]?))?)?", RegexOptions.Compiled);
이뿐만 아니라 작동했지만 속도에 사실이었다 내 텍스트 렌더링에 대한 영향을 줄였습니다. 누군가가 정규 표현식 초보자에게 설명 할 수 있습니까? :)
는 먼저 검사를 실행하는 것과 동일 그것이 완전히 일치하는지보십시오. 당신은 같은 결과를 얻습니다! – Nidonocu