Справка по Perl Regex - PullRequest
       1

Справка по Perl Regex

0 голосов
/ 16 июля 2010

Я ищу соответствия строк из файла с префиксом

/**

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

*/

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

например:

/** anything
    anything
*/

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

Ответы [ 3 ]

3 голосов
/ 16 июля 2010

Добавьте модификатор s после него:

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

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

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

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

На самом деле есть только один онлайн-ресурс, если говорить об изучении регулярных выражений: http://www.regular -expressions.info /

0 голосов
/ 16 июля 2010

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

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

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

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

  1. Perl Perlre Tutorial .Лучшее введение в регулярное выражение Perl.
  2. Perl perlre Документация по Perl
  3. Perl Краткое руководство по Perl Краткое руководство
  4. Регулярные выражения, любимое время синтаксического анализа
  5. Сопоставление шаблонов, регулярные выражения и учебники по синтаксическому анализу в Perlmonks
  6. Объясните регулярное выражение
  7. RegExr Онлайн тестер регулярных выражений
  8. Библиотека регулярных выражений
  9. Regex Powertoy онлайн-тестер
  10. BRE и ERE ссылка
  11. Ларри Уолла Апокалипсис 5: сопоставление с образцом
0 голосов
/ 16 июля 2010

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

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

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

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

Но если вам не нравится читать что-то в ручном стиле, что немного скучно. Попробуйте освоение регулярных выражений Джеффри Фридла от О'Рейли, что более интересно.

http://oreilly.com/catalog/9781565922570

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...