正则表达式$$评估为什么?
答案 0 :(得分:3)
$$
嵌入到正则表达式中将导致插入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引擎。
/$$/
匹配当前进程的PID(进程ID)(请参阅dsm的答案中的更多信息)。/$$/
和/$/
都匹配第一个换行符之前的空字符串,如果字符串中没有换行符,则匹配字符串的结尾。re.search('$$', s)
和re.search('$', s)
都匹配最后一个换行符之前的空字符串,如果字符串中没有换行符,则匹配字符串的结尾。请注意,与正则表达式相关联的标志(通常是s
和m
标志)会影响$
匹配的内容。上面的项目使用默认标志。
答案 4 :(得分:1)
这取决于底层的正则表达式引擎。但是在.Net框架System.Text.RegularExpressions.Regex类中,正则表达式中的$指定匹配必须发生在字符串的末尾,在字符串末尾的\ n之前,或行的末尾,所以$$将匹配所有东西!
($$在替换模式中有另一种含义,它替换单个“$”文字。)
答案 5 :(得分:-1)
通常是行尾的匹配器,但这取决于您使用的是哪种语言。 没有这些具体信息很难回答。
BTW,在csh中表示进程号。这不是一个正则表达式。
路易斯