Вместо регулярных выражений для стандартного поиска и извлечения строки используйте методы класса String, например
indexOf()
,
substr()
или
substring()
.
Определенные операции, выполняемые с использованием регулярного выражения, также можно выполнить с помощью методов класса String. Например, чтобы определить, содержится ли в строке еще одна строка, можно использовать регулярное выражение или метод
String.indexOf()
. По возможности используйте метод класса String, так как он работает быстрее эквивалентного регулярного выражения и не создает дополнительный объект.
Используйте в регулярном выражении незахватывающую группу («
(?:xxxx)
») вместо группы («
(xxxx)
»), если необходимо сгруппировать элементы, не изолируя содержимое группы в результате.
Часто в регулярных выражениях средней сложности части выражения можно сгруппировать. Например, в следующем шаблоне регулярного выражения используются круглые скобки для объединения текста ab в группу. Следовательно, квантификатор «+» применяется к группе, а не к одному символу.
/(ab)+/
По умолчанию содержимое каждой группы «захватывается». Содержимое каждой группы в данном шаблоне можно получить как часть результата выполнения регулярного выражения. Из-за создания дополнительных объектов для хранения результатов групп операция выполняется дольше и требует дополнительные ресурсы памяти. Вместо этого можно использовать синтаксис незахватывающей группы, поставив вопросительный знак с двоеточием после открывающей круглой скобки. Такой синтаксис указывает на то, что символы в круглых скобках образуют группу, однако результат вычисления для этой группы отдельно не сохраняется.
/(?:ab)+/
Использование этого синтаксиса повышает скорость вычислений и использует меньше памяти по сравнению со стандартным синтаксисом группы.
Если обработка регулярного выражения производится медленно, попробуйте использовать альтернативный шаблон регулярного выражения.
Иногда для проверки или идентификации одного и того же шаблона текста можно использовать несколько шаблонов регулярных выражений. По различным причинам некоторые шаблоны обрабатываются быстрее своих аналогов. Если выявлено, что из-за использования регулярного выражения код выполняется медленнее, чем необходимо, рассмотрите возможность использования альтернативных регулярных выражений, позволяющих получить такой же результат. Определите, какой из этих альтернативных шаблонов обрабатывается быстрее.
|
|
|