Regex принимает удивительно много времени

У меня есть строка поиска, введенная пользователем. Обычно строка поиска разделяется с использованием пробелов, а затем выполняется поиск ИЛИ (элемент соответствует, если он соответствует любому из элементов строки поиска). Я хочу предоставить несколькопродвинутый» функции запроса, такие как возможность использовать кавычки для включения буквальных фраз, содержащих пробелы.

Я хотя и придумал приличное регулярное выражение, чтобы разделить строки для меня, но этовыполнение на удивление много времени (> 2 секунды на моей машине). Я разбил его, чтобы выяснить, где был сбой, и еще более интересно, что это происходит после последнегоMatch совпадает (предположительно, в конце ввода). Все совпадения до конца строки совпадают за меньшее время, чем я могу записать, но это последнее совпадение (если этоs, что это такое - ничего не возвращается) занимает почти все 2 секунды.

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

КОД

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace RegexSandboxCSharp {
    class Program {
        static void Main( string[] args ) {

            string l_input1 = "# one  \"two three\" four five:\"six seven\"  eight \"nine ten\"";

            string l_pattern =
                @"(?

Ответы на вопрос(1)

Ваш ответ на вопрос