Почему это регулярное выражение быстрее?

Когда ваш объект user выходит из области видимости, он разрушается. Его члены уничтожаются, включая член indestructible, и это невозможно, поскольку его деструктор удален.

16
задан Nidonocu 17 September 2008 в 21:18
поделиться

4 ответа

Причина, почему № 1 медленнее, является этим [\d;] + жадный квантор. Используя +? или *? движение должно сделать ленивый quantifing. См. MSDN - Кванторы для большего количества информации

, можно хотеть попробовать:

"(\e\[(\d{1,2};)*?[mz]?)?"

, Который может быть быстрее для Вас.

3
ответ дан 30 November 2019 в 23:18
поделиться

Вы действительно хотите сделать выполненный regexp дважды? Не проверив (плохо меня) я думал бы, что это будет работать хорошо:

public static string StripStringFormating(string formattedString)
{    
    return rTest.Replace(formattedString, string.Empty);
}

, Если это делает, необходимо видеть, что он выполняет ~twice как быстро...

4
ответ дан 30 November 2019 в 23:18
поделиться

Я не уверен, поможет ли это с тем, что Вы продолжаете работать, но давно я записал регулярное выражение для парсинга графических файлов ANSI.

(?s)(?:\e\[(?:(\d+);?)*([A-Za-z])(.*?))(?=\e\[|\z)

Это возвратит каждый код и текст, связанный с ним.

Входная строка:

<ESC>[1;32mThis is bright green.<ESC>[0m This is the default color.

Результаты:

[ [1, 32], m, This is bright green.]
[0, m, This is the default color.]
1
ответ дан 30 November 2019 в 23:18
поделиться

Не делая подробного анализа, я предположил бы, что это быстрее из-за вопросительных знаков. Они позволяют регулярному выражению быть "ленивым", и остановка, как только у них есть достаточно, чтобы соответствовать, вместо того, чтобы проверить, соответствует ли остальная часть входа.

я не совсем доволен этим ответом, хотя, потому что это главным образом относится к вопросительным знакам после * или +. Если бы я был более знаком с входом, то он мог бы иметь больше смысла мне.

(Кроме того, для форматирования кода, можно выбрать весь код и нажатие Ctrl + K , чтобы иметь его, добавляют четыре требуемые пробелов.)

1
ответ дан 30 November 2019 в 23:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: