Что означает регулярное выражение $$? - PullRequest
1 голос
/ 29 апреля 2009

для чего вычисляется регулярное выражение $$?

Ответы [ 6 ]

3 голосов
/ 29 апреля 2009

в Perl, встраивание $$ в регулярное выражение приведет к вставке PID процесса perl

# Suppose perl has a PID of 5432
my $str1 = "some";
my $str2 = "5432";

print "1 match: $str1" if $str1 =~ /^$$/;
print "2 match: $str2" if $str2 =~ /^$$/;

Выход:

2 match: 5432

Вставка одного $ будет соответствовать концу строки.

2 голосов
/ 01 мая 2009

Это зависит от языка программирования и механизма регулярных выражений.

  • В Perl, /$$/ соответствует PID (идентификатор процесса) текущего процесса (см. Больше в ответе dsm).
  • В Ruby и /$$/, и /$/ соответствуют пустой строке перед первой новой строкой или концом строки, если в строке нет символов новой строки.
  • В Python и re.search('$$', s), и re.search('$', s) соответствуют пустой строке перед последней новой строкой или концом строки, если в строке нет символов новой строки.
  • (Другие языки или механизмы регулярных выражений могут вести себя по-разному.)

Обратите внимание, что флаги (обычно s и m), связанные с регулярным выражением, влияют на совпадения $. Элементы выше используют флаги по умолчанию.

2 голосов
/ 29 апреля 2009

Эта конструкция маловероятна, за исключением языков, которые допускают интерполяцию переменных в регулярном выражении. В этом случае он, скорее всего, будет соответствовать идентификатору процесса текущего процесса (поскольку $$ обычно является переменной, которая содержит идентификатор процесса).

2 голосов
/ 29 апреля 2009

Это зависит только от базового движка регулярных выражений. Например, в vim он будет соответствовать знаку доллара в конце строки. Я предполагаю, что Posix потребует, чтобы движок совпадал с '$', поскольку этот литерал имеет длину 0, как указал Томалак.

1 голос
/ 29 апреля 2009

Это зависит от базового движка регулярных выражений. Но в .Net Framework System.Text.RegularExpressions.Regex класс $ в регулярных выражениях указывает, что совпадение должно происходить в конце строки, до \ n в конце строки или в конце строки, так что $$ будет соответствовать всему!

($$ имеет другое значение в шаблонах замены, которое заменяет один литерал "$".)

0 голосов
/ 29 апреля 2009

Обычно это совпадение для конца строки, но это зависит от того, какой язык вы используете. Без этой конкретной информации сложно ответить.

Кстати, в csh означает номер процесса. Это не регулярное выражение.

Luis

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