2010-02-18 5 views
1

У меня есть файл с ниже содержанием:Как я могу сопоставить вкладку с концом строки с регулярным выражением Perl?

 
After learning everything you've learned so far, 
you may think you've bingo: got a pretty good foundation in 
programming Perl, since you'd already be a good way 
through most of the concepts many other languages entail. 
endbingo: But if you put down 
this book today and did nothing else 
bingo: with Perl beyond what I've already taught you, 
you'd miss 
endbingo: thats ok. 

мне нужно регулярное выражение Perl, чтобы соответствовать линиям «лото: есть довольно хороший фундамент в» и «лото: с Perl за то, что я уже научил вас ».

В этом смысле слово« бинго », за которым следует вкладка, за которой следует произвольный набор символов до конца строки».

+1

ли «бинго» должны быть привязаны к началу линии или могут быть в середине линии, как и вторая строка в вашем примере? – ninesided

ответ

0

В многострочного пробном режиме:

\Wbingo:\s.*$ 

\W означает любой алфавитно-цифровой CHAR

\s означает белый символ (пробел, табуляция, новая строка)

.* означает ноль или более произвольных символов

$ означает конец строки

0

если по игре, вы просто хотите, чтобы показать линии с «лото:» и вкладки года, затем

perl -ne 'print if /bingo:\s+.+$/' file 

, если вы хотите, чтобы соответствовать слово «лото:» но не «endbingo:», затем

$ perl -ne 'print if /\bbingo:\s+.+$/' file 
you may think you've bingo: got a pretty good foundation in 
bingo: with Perl beyond what I've already taught you, 
0

Значит, это не должно соответствовать endbingo? Попробуйте это:

/(?<!end)bingo:\s+.*$/ 

в (< является отрицательным просмотром назад и надлежащим образом, чтобы исключить endbingo без исключения случаев, когда «лото:»?!. Сразу следует немного непустой текст

В противном случае , если всегда есть пробелы за лото, просто /\sbingo:\s+(.*)$/

0

Если вы ищете вкладку и не все белое пространство использовать следующее:

/bingo:\t.*$/ 

Если строка должна начинаться с «лото:» Вы должны использовать это:

/^bingo:\t.*$/ 
2

Поскольку вы еще не опубликовали ни собственный код, я полагаю, вы даже не знаете, как начать строить Perl регулярное выражение. Вот некоторые ресурсы, чтобы вы начали.

С официального сайта документации Perl:

Я понимаю, что это не прямо ответить на ваш вопрос (как и другие уже сделали), но, возможно, это поможет вам быстрее сблизиться с решением будущей проблемы.

Смежные вопросы