Pull to refresh

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

Reading time1 min
Views1.3K
Как часть программы анализа исходных кодов было необходимо вырезать из 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:
Total votes 22: ↑10 and ↓12-2
Comments18

Articles