Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как в регулярном выражении обозначается "может быть а может и не быть" ? (https://javascript.ru/forum/misc/23617-kak-v-regulyarnom-vyrazhenii-oboznachaetsya-mozhet-byt-mozhet-i-ne-byt.html)

[MI_nor] 30.11.2011 03:30

Как в регулярном выражении обозначается "может быть а может и не быть" ?
 
Пример: составил регулярку /(var|Integer|Number|Object|Boolean)?\s*\w+\s*(=\s* "?.*"?\s*)?;/
Она должна искать все переменные, объявленные в javascript коде. Но в итоге получается так что какие то куски она находит несколько раз. К примеру в коде:

Integer i;
d = 0;
var a = d;

Оно находит:

Всего совпадений 3

1 : Integer i;
1.1 : Integer
2 : var a = d;
2.1 : var
2.2 : = d
3 : d = 0;
3.1 :
3.2 : = 0

Какие то подсовпадения >_<

Pavel M. 30.11.2011 07:49

почитайте http://javascript.ru/String/match
видимо надо использовать /.../g

melky 30.11.2011 09:02

Цитата:

Сообщение от [MI_nor] (Сообщение 139837)
Она должна искать все переменные, объявленные в javascript коде.

Цитата:

Сообщение от [MI_nor] (Сообщение 139837)
Integer i;
d = 0;
var a = d;

javascript ? :blink:

Fynivx 30.11.2011 15:07

"Какие то подсовпадения" - то, что в круглых скобках. А обозначили Вы правильно - ? - может быть, а может и не быть; * - может и не быть, а может быть и не один; + должен быть, но может и несколько раз; \w - не совсем правильно - переменная не может начинаться с цифры, а значит нужно \D+\w*. Ну, или что-то в этом роде.

А еще могут быть варианты типа
var a, b, c = 3, d = b;
Тогда это выражение работать не будет.

nule 30.11.2011 21:09

А как результат выводите?
Попробуйте "не запоминающие" скобки /(?:var|Integer|Number|Object|Boolean)?\s*\w+\s*(?: =\s* "?.*"?\s*)?;/


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