Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите составить регулярку для получения "private" переменных (https://javascript.ru/forum/misc/36745-pomogite-sostavit-regulyarku-dlya-polucheniya-private-peremennykh.html)

rgl 27.03.2013 11:11

devote,
Изначально предполагалось, что поиск производится в JavaScript коде, где строковый литерал должен заканчиваться на той же строчке кода, что и начинается, т.е. между открывающей и закрывающей кавычкой не должно быть \n. Думаете, я специально поставил точку а не [\s\S] ?? Вовсе нет, я поставил точку именно потому, что не хотел, чтобы перевод строки матчился.
Взгляните, хотя бы сюда:
http://javascript.ru/forum/misc/3674...tml#post242740
где я хотел, чтобы матчился перевод строки, поставил [\s\S] (внутри комментариев /* */, а где не хотел, пославил точку (в комментариях // и в строковых литералах.

devote 27.03.2013 11:17

Цитата:

Сообщение от rgl
где строковый литерал должен заканчиваться на той же строчке кода

кто вам такое сказал? открою вам тайну, в JS можно писать многострочные строковые переменные:

var string = 'Привет\
Как\
Твои\
Дела?';

alert(string);

rgl 27.03.2013 11:32

Тогда все решается заменой точки на [\S\s]
var str = 'привет "МИР"! тут я поставлю кавычку " а можно и\n слеши \\ или кавычка со слешами \\" или кавычки " " или много\n слешей и ковычка \\\\\\\\\\\\\\\\" и" т.\\\\\\\\\\\\\\\\\\"д"......';

var re = /(["'])(?:\\[\S\s]|(?:(?!\1|\\)[\S\s]))*\1/g;
var res = str.match(re);
alert("Найдено: " + (res&&res.length||0) + " вхождени(е/й/я)\n--------------------------\n" + (res||[]).join("\n"));

yngwie19 30.03.2013 16:17

Ребят подскажите как использовать это регулярное выражение?:
/(["'])(?:\\[\S\s]|(?:(?!\1|\\)[\S\s]))*\1/g;


в моем примере на первой странице

rgl 30.03.2013 21:44

Цитата:

Сообщение от yngwie19 (Сообщение 243472)
Ребят подскажите как использовать это регулярное выражение?:
/(["'])(?:\\[\S\s]|(?:(?!\1|\\)[\S\s]))*\1/g;


в моем примере на первой странице

Тема уже отклонилась от первоначальной, и это выражение к вопросу на первой странице не подходит. Оно предназначено для нахождения текстовых строк, но не для замены имен переменных. Оно скорее ответ в споре с devout чем для практического применения, ибо работает не совсем правильно, т.к. находит "строки" содержащие перевод строки.
Лучше было бы так:
/(["'])(?:\\[\S\s]|(?:(?!\1|\\).))*\1/g;

yngwie19 30.03.2013 23:23

А где в этом выражении нижнее подчеркивание?

rgl 31.03.2013 01:10

В этом выражении нижнего подчеркивания нет, т.к.
Цитата:

Сообщение от rgl
Тема уже отклонилась от первоначальной, и это выражение к вопросу на первой странице не подходит.

Нижнее подчеркивание есть тут:
http://javascript.ru/forum/misc/3674...tml#post242706
Чем-то не устраивает?


Часовой пояс GMT +3, время: 16:39.