-
Здравствуйте, Стоит задача отыскать в тексте пас файла бегины и энды. Написал такое рег. выражение: (?i)(^|\b)(begin|end)($|\b) . Его недостаток в том, что оно находит бегины с эндами и в строках и в комментариях, а мне нужно найти только, так сказать, операторные скобки.
-
а это получится сделать регулярным выражением ?
-
Этот вопрос можно добавить к [0] :)
А без регулярки придется делать стек и следить что мы не в комментрарии или строке? Кстати, кроме комментариев и строк что еще может сделать из бегинэнда не бегинэнд?
-
а без регулярки написать простой парсер - дел на полдня
-
Собственно, его даже писать не надо - на sourceforge в разделе Jedi Code Formatter (JCF) он уже есть готовый и написанный.
-
Видимо можно (см. ссылку ниже), но TRegExp не поддерживает... Просмотр вперёд и назад http:
-
Ладно, посмотрю джеди, благодарю.
-
> Kolan © (24.10.08 10:58)
А что мешает исключить такие результаты из дальнейшего рассмотрения, применив дополнительный поиск по рег.выражениям на предмет входжения найденного образца в строку или комментарий ?
-
можно за два прохода - в первый удалить комментарии, во второй найти "скобки"
-
может поможет чем (php): $arr=file('base64.pas');
$ress=implode('',$arr);
function call_strip_delhi_span_bbstring( $a )
}
function call_strip_delhi_span_bbcomment( $a )
}
$ress=preg_replace_callback(\"#(?![^<]*?>)(\'.*?\')(?![^<]*?>)#i", "call_strip_delhi_span_bbstring", $ress);
$ress=preg_replace_callback("#(?![^<]*?>)((\/\/.*?)(\n|$))(?![^<]*?>)#is", "call_strip_delhi_span_bbcomment", $ress);
$ress=preg_replace( "#begin#is","begin",$ress );
$ress=preg_replace( "#end#is","end",$ress );
$ress=str_replace( "be[G]in" , "begin" , $ress );
$ress=str_replace( "e[N]d" , "end" , $ress );
$ress=str_replace( "\n" , "<br>\r\n", $ress );
echo $ress;
-
мдя.. некоторые html-коды были скушаны...
|