Мое программное обеспечение позволяет пользователям использовать регулярное выражение для подготовки файлов. Я в процессе добавления библиотеки regexp по умолчанию с общими выражениями, которые могут быть повторно использованы для подготовки различных форматов. Одной из общих задач является удаление crlf в определенных частях файлов, но не в других. Например, это:Улучшение производительности регулярного выражения
<TU>Lorem
Ipsum</TU>
<SOURCE>This is a sentence
that should not contain
any line break.
</SOURCE>
должны стать:
<TU>Lorem
Ipsum</TU>
<SOURCE>This is a sentence that should not contain any line break.
</SOURCE>
У меня есть rexep, что делает работу очень хорошо:
(?(?<=<SOURCE>(?:(?!</?SOURCE>).)*)(\r\n))
Проблема заключается в том, что он обрабатывает интенсивный и файлов выше 500 КБ, это может занять 30+ секунд. (regex компилируется, в этом случае нескомпилированный намного медленнее)
Это не большая проблема, но мне интересно, есть ли лучший способ достичь тех же результатов с помощью Regex.
Заранее благодарим за ваши предложения.
На каком языке? (И этот файл XML?) – kennytm
Вы пробовали искать закрывающий тег вместо открытия? У меня часто возникает впечатление, что двигатель регулярного выражения более «естественно» идет вперед. – Jens
Вы считали * not * использующим регулярное выражение? –