Я обнаружил странную проблему с комбинацией RichTextBox и RegEx.Если я загружу текстовый файл в RichTextBox и использую
Dim matches As MatchCollection = Regex.Matches(RichTextBox1.Text, "^H(.+\t){10}\n", RegexOptions.Multiline Or RegexOptions.IgnoreCase)
, то RegEx будет работать очень быстро.OTOH, если я загружаю текст из файла прямо в строку и кормлю эту строку с помощью RegEx.Matches, используя
Dim FullText As String = New StreamReader("c:\Temp\TextFile.txt", System.Text.Encoding.UTF8, True).ReadToEnd
Dim matches As MatchCollection = Regex.Matches(FullText, "^H(.+\t){10}\n", RegexOptions.Multiline Or RegexOptions.IgnoreCase)
, тогда регулярное выражение будет работать целую вечность.
Теперь, очевидно, RichTextBox делаетчто-то к тексту.Я обнаружил, что загрузка текста в RichTextBox устранит первые 4 байта текста (это знак порядка байтов?).Однако обрезка этих 4 символов с помощью SubString не решит проблему.RichTextBox выполняет некоторую другую обработку, о которой я не знаю.
Я использую RegEx как на стороне клиента, так и на стороне сервера (клиент может загружать текстовые файлы в RichTextBox для тестирования и настройки различных RegEx, и сервер будет обрабатывать текстфайлы в соответствии с этими ранее настройками RegEx).Само собой разумеется, что регулярное выражение будет работать с огромной скоростью для текстового файла, загруженного в RichTextBox, в то время как тот же RegEx, запускаемый через тот же текстовый файл, может заблокировать службу на стороне сервера.
Мой вопрос:какой вид обработки текста выполняет RichTextBox и как я могу имитировать поведение в процессе на стороне сервера?
Заранее благодарю за любезную помощь.
С наилучшими пожеланиями, Даниэль