正则表达式$$是什么意思?

时间:2009-04-29 08:05:03

标签: regex linux unix

正则表达式$$评估为什么?

6 个答案:

答案 0 :(得分:3)

在Perl中,将$$嵌入到正则表达式中将导致插入perl进程的PID

# 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

插入单个$将匹配行尾。

答案 1 :(得分:2)

它只取决于底层的正则表达式引擎。例如,在vim中,它会匹配行尾的美元符号。我猜测Posix会要求引擎与'$'匹配,因为该文字的长度为Tomalak所指出的长度。

答案 2 :(得分:2)

除了在正则表达式中允许变量插值的语言之外,不太可能出现这种结构。在这种情况下,它很可能会匹配当前进程的进程ID(因为$$通常是一个保存进程ID的变量。)

答案 3 :(得分:2)

这取决于编程语言和regexp引擎。

  • 在Perl中,/$$/匹配当前进程的PID(进程ID)(请参阅dsm的答案中的更多信息)。
  • 在Ruby中,/$$//$/都匹配第一个换行符之前的空字符串,如果字符串中没有换行符,则匹配字符串的结尾。
  • 在Python中,re.search('$$', s)re.search('$', s)都匹配最后一个换行符之前的空字符串,如果字符串中没有换行符,则匹配字符串的结尾。
  • (其他语言或正则表达式引擎可能表现不同。)

请注意,与正则表达式相关联的标志(通常是sm标志)会影响$匹配的内容。上面的项目使用默认标志。

答案 4 :(得分:1)

这取决于底层的正则表达式引擎。但是在.Net框架System.Text.RegularExpressions.Regex类中,正则表达式中的$指定匹配必须发生在字符串的末尾,在字符串末尾的\ n之前,或行的末尾,所以$$将匹配所有东西!

($$在替换模式中有另一种含义,它替换单个“$”文字。)

答案 5 :(得分:-1)

通常是行尾的匹配器,但这取决于您使用的是哪种语言。 没有这些具体信息很难回答。

BTW,在csh中表示进程号。这不是一个正则表达式。

路易斯