2015-04-09 3 views
1

Мне нужно сопоставить целую строку с помощью регулярного выражения, я знаю, что регулярное выражение не лучшее решение для возврата всей строки, но используемое мной программное обеспечение ограничено регулярными выражениями ,Faster Regex, кроме. + Для соответствия всей строке

Типичная строка будет целая страница HTML с веб-страницы, иногда необходимо использовать регулярное выражение для соответствия всю строку, которая будет выполнена с любым из следующих

.+ 
^.+$ 
\A.+\Z 
[\S\s]* 

все они принимают между 10 - 13 мс, который кажется действительно медленным, учитывая, что я просто хочу получить всю строку с помощью регулярного выражения, есть ли какое-либо ключевое слово или специальная функция регулярного выражения, которую я могу использовать для соответствия всей строке без проверки, так как очевидно 4 примера I приведенные выше, слишком медленны

+0

Как долго ваша строка и какой язык вы используете? – YOU

+0

Используйте атомную группировку (http://www.regular-expressions.info/atomic.html) или притяжательные квантификаторы (http://www.regular-expressions.info/possessive.html). –

+0

Строка составляет около 148 000 символов, регулярные выражения используются для очистки веб-сайтов, хотя регулярные выражения являются дескрипторами приложения C#, поэтому нет возможности использовать другие функции C#, кроме того, что может быть добавлено в регулярное выражение, к сожалению, –

ответ

1

С двигателем .NET regex вы можете использовать atomic groupings для улучшения представление.

E.g. ^(?s)(?>.+)$, или просто (?s)(?>.+).

Посмотрите на this video.

+0

. Я думаю, что атомная группировка здесь не актуальна. '. +' никогда не отступает в любом случае. '^ (?>. +) $' может иметь backtracking, но регулярное выражение должно запускаться в режиме «SingleLine» в любом случае, что делает '.' соответствует любому символу без исключения и достигнет конца строки. – nhahtdh

+0

Да, я добавил опцию inline 's'. –

+0

Несмотря на это, я думаю, что атомная группировка бесполезна, так как матч будет найден в любом случае. – nhahtdh

Смежные вопросы