Помните Правило Рэндала :
Рэндал Шварц (автор Learning Perl) говорит:
Используйте захват или m//g
, когда вы знаетечто вы хотите сохранить .
использовать split
, когда вы знаете, что хотите выбросить .
Вы знаете, чтоВы хотите сохранить, но вы не сказали нам все, что вы знаете.Вы хотите, чтобы последовательность символов слова следовала за первым пробелом в строке?
print $1, "\n" if $homeserver =~ / (\w+)/;
Хотите ли вы сохранить самую длинную, самую левую строку символов слова до :/
, где бы это ни было?
print $1, "\n" if $homeserver =~ /(\w+):\//;
Можем ли мы зависеть от того, находится ли Ребека в начале строки?
print $1, "\n" if $homeserver =~ /^rebeka (\w+)/;
Если нет, можно ли предположить, что начало строки будет неким непрерывным пробегомсимволы слова?
print $1, "\n" if $homeserver =~ /^\w+ (\w+)/;
При сопоставлении с регулярными выражениями определите свои привязки: функции, на которые вы можете полагаться, присутствуя в тексте как маркеры или вспомогательные элементы для того, что вы хотите сохранить.Также обратите внимание, что в приведенных выше примерах $1
используется только внутри условных;никогда не используйте переменные захвата безоговорочно.