Форум: "Прочее";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];
ВнизРегулярное выражение для поиска begin и end Найти похожие ветки
← →
Kolan © (2008-10-24 10:58) [0]Здравствуйте,
Стоит задача отыскать в тексте пас файла бегины и энды. Написал такое рег. выражение:(?i)(^|\b)(begin|end)($|\b)
. Его недостаток в том, что оно находит бегины с эндами и в строках и в комментариях, а мне нужно найти только, так сказать, операторные скобки.
← →
Игорь Шевченко © (2008-10-24 10:59) [1]а это получится сделать регулярным выражением ?
← →
Kolan © (2008-10-24 11:03) [2]Этот вопрос можно добавить к [0] :)
А без регулярки придется делать стек и следить что мы не в комментрарии или строке? Кстати, кроме комментариев и строк что еще может сделать из бегинэнда не бегинэнд?
← →
Игорь Шевченко © (2008-10-24 11:07) [3]а без регулярки написать простой парсер - дел на полдня
← →
Игорь Шевченко © (2008-10-24 11:08) [4]Собственно, его даже писать не надо - на sourceforge в разделе Jedi Code Formatter (JCF) он уже есть готовый и написанный.
← →
Kolan © (2008-10-24 11:15) [5]Видимо можно (см. ссылку ниже), но TRegExp не поддерживает...
Просмотр вперёд и назадhttp://ru.wikipedia.org/wiki/Регулярные выражения#Просмотр вперёд и назад
← →
Kolan © (2008-10-24 11:15) [6]Ладно, посмотрю джеди, благодарю.
← →
Сергей М. © (2008-10-24 11:17) [7]
> Kolan © (24.10.08 10:58)
А что мешает исключить такие результаты из дальнейшего рассмотрения, применив дополнительный поиск по рег.выражениям на предмет входжения найденного образца в строку или комментарий ?
← →
wl © (2008-10-24 13:05) [8]можно за два прохода - в первый удалить комментарии, во второй найти "скобки"
← →
antonn © (2008-10-24 13:52) [9]может поможет чем (php):
$arr=file("base64.pas");
$ress=implode("",$arr);
function call_strip_delhi_span_bbstring( $a ){
if(count($a)==2){
$a[1]=preg_replace( "#begin#is","be[G]in",$a[1] );
$a[1]=preg_replace( "#end#is","e[N]d",$a[1] );
return $a[1];
}
}
function call_strip_delhi_span_bbcomment( $a ){
if(count($a)==4){
$a[2]=preg_replace( "#begin#is","be[G]in",$a[2] );
$a[2]=preg_replace( "#end#is","e[N]d",$a[2] );
$a[2]=str_replace( """ , "'" , $a[2] );
return $a[2].$a[3];
}
}
$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;
← →
antonn © (2008-10-24 13:53) [10]мдя.. некоторые html-коды были скушаны...
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.053 c