Нужно ли экранировать точку с запятой в литерале регулярного выражения Perl? - PullRequest
10 голосов
/ 29 июля 2009

Кто-то говорит мне, что мне нужно экранировать точку с запятой в литерале регулярного выражения Perl. То есть, чтобы соответствовать строке, содержащей точку с запятой, я должен использовать /\;/, а не /;/.

Из того, что я прочитал, точка с запятой не имеет особого значения в литерале регулярного выражения, поэтому экранирование кажется ненужным. Я провел несколько экспериментов, и /;/, кажется, работает нормально. С включенными предупреждениями и действующей прагмой use strict; 1007 * не жалуется.

Есть ли какая-то причина, по которой /\;/ лучше, чем /;/? Эта версия зависит от версии?

Ответы [ 6 ]

14 голосов
/ 29 июля 2009

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

Краткое описание специальных символов и escape-последовательностей можно найти в perldoc perlreref.

5 голосов
/ 29 июля 2009

Возможно, кто-то думает, что точку с запятой нужно экранировать, потому что подсветка синтаксиса их редактора путается со встроенной точкой с запятой. По моему опыту, большинству редакторов очень трудно справиться с синтаксисом Perl. Помните, Только Perl может анализировать Perl .

3 голосов
/ 29 июля 2009

Возможно, это привычка, разработанная на основе использования однострочных символов perl в командной строке, а не цитирования, поэтому ';' разделить остальное в другую команду? Во всяком случае, как все говорят, не нужно.

1 голос
/ 29 июля 2009

Нет. /;/ всегда должно работать нормально.

1 голос
/ 29 июля 2009

нет необходимости избегать этого.

0 голосов
/ 29 июля 2009

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

...