2010-12-13 2 views
0

im пытается удалить непреднамеренные комментарии с помощью preg-replace в управляемых сценариях, но мое регулярное выражение неверно. Кто-нибудь знает, что случилось с моим регулярным выражением? (У меня есть Apache/2.0.54 & PHP/5.2.9php function preg_replace regex не работает, вопрос синтаксиса

ДО:

// Bla Bli Blue Blow Bell Billy Bow Bye 
script var etc(); // cangaroo cognac codified cilly celine cocktail couplet 
script http://blaa.org // you get the idea! 

ПОСЛЕ:

script var etc(); 
script http://blaa.org 

ПРОБЛЕМА: что регулярное выражение для использования

# when comment starts on a new line, delete this entire line 
# find [a new line] [//] [space or no space] [comment] 
$buffer = preg_replace('??', '??', $buffer); 

# when comment is halfway in script ( // comment) 
# find [not beginning of a line] [1 TAB] [//] [1 space again] [comment] 
$buffer = preg_replace('??', '??', $buffer); 

Любые и все предложения будут оценены мной +1, cuase im so darn, чтобы решить эту загадку!

+1

Вы считали, что вместо регулярного выражения используется правильный токенизатор? Вы сможете выбросить только токены комментариев. – cdhowie

+1

Как насчет многострочных комментариев? Особенно вложенные многострочные комментарии? Это ужасно нетривиально для регулярных выражений, но тривиально для токенизатора/* это/* вложенный комментарий */ –

+0

Написание комментариев последовательно, означает, что нет места для такой странной вещи, как Marc B, комментарий в коммюнике. Тем не менее иронично, что такая лекция о непротиворечивости исходит из уст очень неспособного программиста, а именно я хаха! – Sam

ответ

1

Попробуйте это регулярное выражение:

/(?<!http:)\/\/[^\r\n]*/ 

Будьте осторожны, хотя, считают строки, как:

<!-- 
// not a comment --> 

или

/* 
// not a comment */ 

и

var s = "also // not // a // comment"; 

И вы, возможно, захотите обойти https://... и ftp://... и т. д.

+0

# BEAUTIFULL !!!! отсутствие этих странных ситуаций с комментариями в комментарии дает место для еще более чистого кода: ваше регулярное выражение работало в первый раз из коробки! желаю вам отличного выходного Барта! – Sam

+0

@ Да, пожалуйста. Выходные? Это займет еще несколько дней, но спасибо, и у вас тоже хороший день! :) –