Как часть программы анализа исходных кодов было необходимо вырезать из 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);
И это во много раз быстрее анализатора, 50-ть строчек которого канули в Лету.
Автор: qMBQx8GH