2010-07-16 5 views
0

Я ищу, чтобы соответствовать строки из файла, которые приставкойPerl Regex Помощь

/** 

и имеют постфикс

*/ 

С любым количеством символов/пробелов/переводов строк между ними.

например:

/** anything 
    anything 
*/ 

m/(\/\*\*).*?(\*\/)/ У меня есть до сих пор, однако это не обрабатывает переводы строк. Я знаю, что исправление должно быть простым, но у меня очень ограниченный опыт регулярных выражений.
Бонусный вопрос: Есть ли у кого-нибудь хороший сайт для изучения регулярных выражений?

+3

'perldoc -q comments' – ghostdog74

+0

O'Reilly имеет большую книгу для изучения регулярных выражений. Вы догадываетесь, что это за заголовок. :) – Ether

ответ

3

Добавьте smodifier после него:

m/(\/\*\*).*?(\*\/)/s 

Но если это исходный код вы работаете на, будьте осторожны:

print 'a string /**'; 
int a = b + c; 
print '*/'; 

// /** 
a = a - c; 
// */ 

Там действительно только один интернет-ресурс, если речь идет о учебное пособие: http://www.regular-expressions.info/

+0

Заметьте, что я не говорю, что других хороших онлайн-ресурсов не существует, но тот, который я опубликовал, должен быть достаточным для любого нового для регулярного выражения, чтобы получить хорошее представление о том, как использовать регулярные выражения. –

+0

Работы, также спасибо за сайт. – James

0

Без использования/s с make '.' ведут себя по-другому: должно быть также занято следующее:

m/(\/\*\*)(\r?\n|.)*(\*\/)/ 

Для изучения места perl?

http://perldoc.perl.org/ http://perldoc.perl.org/index-tutorials.html Это моя последняя ссылка, всегда.

Но если вам не нравится читать что-то в ручном стиле, который немного разряжен. Исследуйте регулярные выражения Джеффри Фридла из O'Reilly, что более интересно.

http://oreilly.com/catalog/9781565922570

+1

Вместо '(\ r? \ N |.)', Вы можете сделать: '[\ s \ S]'. –

0

Вашего специфическое регулярное выражение (с символами новой строки) может быть сопоставлено с \/\*\*[\d\D]*?\*\/ Побочным эффектом \D является то, что он совпадает с новой строкой и может быть использован таким же образом.

В Perl вы также можете использовать Regexp::Common для поиска целого ряда комментариев к исходному коду.

Там уже упоминались некоторые из лучших ссылок (книги Friedl в и http://www.regular-expressions.info/)

Мои веб-сайты для регулярных выражений являются следующие:

  1. Perl perlre tutorial. Лучшее введение в регулярное выражение Perl.регулярное выражение документации
  2. Perl perlre в Perl
  3. Perl perlre quick reference краткое руководство
  4. Regular Expressions, A Favorite Parsetime
  5. Pattern Matching, Regular Expressions and Parsing Tutorials в Perlmonks
  6. Explain Regex
  7. RegExr Интернет Regular Expression Tester
  8. Regular Expression Library
  9. Regex Powertoy онлайна тестер
  10. BRE and ERE ссылка
  11. Ларри Уолл Apocalypse 5: Pattern Matching