Справка по регулярным выражениям в C # -. + ИЛИ [^ $] + $ - PullRequest
0 голосов
/ 28 января 2010

В одной строке Regex, если я хочу захватить все до конца строки .. Что из этого будет лучше с точки зрения производительности?

Regex r = new Regex(".+");

ИЛИ

Regex r = new Regex("[^$]+$");

Я не включил все регулярные выражения, но я надеюсь, что вы поняли.

Есть ли компромиссы или они обавести себя так же?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 28 января 2010

Использование StringReader кажется более подходящим:

using (var reader = new StringReader(someString))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        // You capture the line here
    }
}
2 голосов
/ 28 января 2010

То, что вы делаете, называется преждевременной оптимизацией. Производительность приятно иметь, но вы также должны сохранять код простой и читабельным .
.+$ означает «читать все до конца» - очевидно, зачем это усложнять? Позже, если ваша программа работает медленно, вы профилируете ее и пытаетесь выяснить, почему (типичными узкими местами являются запросы данных и сеть - но ничего не предполагайте).
Это хороший пример того, почему бы не оптимизировать слишком рано; имея благие намерения, вы усложнили свой код и допустили ошибки: [^$]+$ не имеет значения, которое вы имели, хотя оно имело.

1 голос
/ 28 января 2010

Я подозреваю, что вы неправильно понимаете, что на самом деле делает второе регулярное выражение, [^$]+. Он соответствует одному или нескольким символам, отличным от литерала $. Таким образом, он будет соответствовать всей строке, включая разрывы строк. Так что он делает что-то отличное от .+ совпадений. Поэтому их нельзя сравнивать друг с другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...