2012-06-08 2 views
-2

Кто-нибудь, пожалуйста, объясните мне в неспециалистских терминах использование модификаторов/^ и $ в приведенном ниже описании;

elsif ($keyword =~ /^verse$/gi) 

я получаю информацию, что^соответствует началу строки, а $ соответствует концу строки, но что именно это должно означать? Кто-то объяснит мне, что именно должно быть рассмотрено условие if.

+0

Эти символы определены в разделе Модификаторы perlre (1). http://perldoc.perl.org/perlre.html # Модификаторы –

+2

@CodeGnome - Нет, они не являются (потому что они не являются модификаторами) – Quentin

+0

@Quentin '[C] hange«^»и« $ »от соответствия началу или концу строки для соответствия началу или конец любой строки в любом месте строки. »звучит как определение для меня. Не стесняйтесь добавлять свои собственные конструктивные ссылки. –

ответ

1

^ означает «Старт» и $ означает «конец». См. Раздел о Metacharacters в Perldoc.

Так что это немного похоже lc($keyword) eq "verse"

+0

И что такое 'fc()'? – TLP

+0

Особая благодарность @daxim за редактирование в новой новинке Perl 5.16 (о которой мало кто знает), чтобы заменить мой простой пример. – Quentin

+0

Дело складывающиеся. Это правильный способ сделать 'lc ($ a) eq lc ($ b)' – Borodin

0

^ означает «начало строки».

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

Информация доступна практически в любом учебнике регулярных выражений - похоже, вы уже знаете, что это значит, это проверка на "verse".

2

Эти символы являются «утверждениями с нулевой шириной». Они не выдерживают никакой группы символов, но позиций в строке.

  • ^ означает, что я ожидаю этот шаблон в начале строки или записи.
  • $ означает, что я ожидал этот шаблон в конце строки или записи

В стандартном режиме согласования (без закрывающего переключателя /m), Perl рассматривает только первую запись в виде строке как общий поиск пространства. С помощью переключателя /m Perl рассматривает все записи в строке, где каждая запись делится на текущее значение $/ (также $RS с useEnglishqw($RS);).

Итак, если вы просматриваете пару записей, и знаете, что шаблон происходит в начале или конце, вы можете использовать эти символы, чтобы указать это. (Абсолютное начало строки всегда \A и абсолютный конец \Z за место перед разделителем записей, который заканчивается всей строкой или \z для места после каждого отдельного символа в строке. Perl Best Practices предпочитает равномерное использование \z.)

Для уточнения, стандарт запись представляет собой строку ввода, разделенную разделителем строк системы.

Чтобы ответить на ваш конкретный вопрос: условие будет истинным, если первая запись в строке в $keyword точно соответствует 'verse'. Для строк, которые не должны содержать ничего, кроме этого, вы также можете использовать

if ($keyword eq 'verse') { 
    ... 
} 
+1

Тоже. Многое. Информация! – Borodin