Pull to refresh

Об удалении квотированных строк из текста JavaScript

Reading time 1 min
Views 1.2K
Как часть программы анализа исходных кодов было необходимо вырезать из JavaScript все строковые литералы. Сначала на PHP был реализован state based парсер, но это было медленно и уныло. А сделать быстро получилось с помощью регулярных выражений.

Источником вдохновения послужил пост на stackoverflow. В результате получилось следующее решение:
return preg_replace('/(
"[^"\\\\]*(?:\\\\.[^"\\\\]*)*" # match double quoted string
|
\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\' # match single quoted string
|
(?s:\\/\\*.*?\\*\\/) # multiline comments
|
\\/\\/.*?\\n # singleline comments
|
string.replace\\(\\/[^\\/\\\\]*(?:\\\\.[^\\/\\\\]*)*\\/ # an JS regexp
)/x', '', $str);

И это во много раз быстрее анализатора, пятьдесят строчек которого канули в Лету.
Tags:
Hubs:
-2
Comments 18
Comments Comments 18

Articles