Регулярка для комментариев /* comment */ , опционально закрытых
Помогите составить регулярку для отлова комментариев типа
/*
$foo = 1 + 2;
$foo = $foo;
print $foo;
*/
или
/*
$foo = 1 + 2;
$foo = $foo;
print $foo;
То есть комментарий может быть не закрытым. Есть такая регулярка: /\/\*(.|\s)*?\*\// - она ловит цельные комментарии. Попутный вопрос - на незакрытых комментариях она замораживает браузер на несколько секунд - почему? Я ее изменил на /\/\*[\S\s]*?\*\// , теперь не тормозит. Необходимо изменить паттерт, чтоб под него подходили как открытые, так и закрытые комментарии. Пробовал /\/\*[\S\s]*?(?:\*\/)?/ , но не подходит, так же как и /\/\*[\S\s]*(?:\*\/)?/ Две последовательных проверки : /\/\*(.|\s)*?\*\// , затем /\/\*[\S\s]*/ работают. Вопрос - как можно совместить эти регулярки, или переделать, чтоб решить задачу? |
Цитата:
|
var str = "/* \n" +
"$foo = 1 + 2; \n" +
"$foo = $foo; \n" +
"print $foo;\n" +
"*/";
var str2 = "/* \n" +
"$foo = 1 + 2; \n" +
"$foo = $foo; \n" +
"print $foo;";
alert( /\/\*([\S\s]*?)(?:\*\/|$)/.exec( str ) );
alert( /\/\*([\S\s]*?)(?:\*\/|$)/.exec( str2 ) );
|
devote, спасибо.
А подсказать кто-нибудь может почему такой код вызывает фриз браузера секунд на 10? var str = "<?php \n" + "/* \n" + " $foo = 1 + 2; \n" + " $foo = $foo; \n" + " print $foo;\n" + "?>"; alert( /\/\*(.|\s)*?\*\//.exec( str ) ); |
Цитата:
var str = "<?php \n\
/* \n\
$foo = 1 + 2; \n\
$foo = $foo; \n\
print $foo;\n\
?> ";
var a = str.replace(/[\s\S]*?(\/\*)[\s\S]*?(?:(\*\/))/img,'$1$2');
alert(a.replace(/\/\*\*\//igm,'')=='');
var str = "<?php \n\
/* \n\
$foo = 1 + 2; */ /*\n\
$foo $foo; \n\
print*/ $foo;/*\n\
?> */";
var a = str.replace(/[\s\S]*?(\/\*)[\s\S]*?(?:(\*\/))/img,'$1$2');
alert(a.replace(/\/\*\*\//igm,'')=='');
|
| Часовой пояс GMT +3, время: 11:46. |