Небольшие изменения в любом коде на любом языке могут привести к полностью различным результатам. Некоторые из них даже мешают компиляции.
Замените регулярное выражение на "C" или "C #", или "Java", или "Python", или "Perl", или "SQL", или "Ruby", или "awk", или ... что-нибудь, действительно, и вы получите то же самое вопрос.
Regex - это просто другой язык, кодированный Хаффманом , чтобы быть эффективным при сопоставлении строк. Подобно Java, Perl, PHP или особенно SQL, каждый язык имеет свои сильные и слабые стороны, и вам нужно знать язык, на котором вы пишете, когда вы его пишете (или поддерживаете), чтобы иметь какую-то надежду на продуктивность.
Редактировать: Майк, регулярные выражения Хаффмана закодированы в том, что общие дела короче, чем редкие вещи. Буквенные совпадения текста, как правило, представляют собой один символ (тот, который вы хотите сопоставить). Существуют специальные символы - общие из них короткие. Специальные конструкции, такие как (? :) длиннее. Это не то же самое, что было бы распространено в языках общего назначения, таких как Perl, C ++ и т. Д., Поэтому кодирование Хаффмана было нацелено на эту специализацию.