对于PCRE,符号’是特殊的吗?

Regular expression: “[^”]*“

String: “lips“

结果:匹配

String: “lips’“

结果:不匹配(在Boost和Perl中)

我希望两个字符串都匹配。

C ++代码:

#include <iostream>
#include <string>
#include <boost/regex.hpp>

using namespace std;
using namespace boost;

int main()
{
    const string s1 = "“lips“";
    const string s2 = "“lips’“";
    if (regex_search(s1, regex("“[^”]*“"))) cout << "s1 matched" << endl;
    if (regex_search(s2, regex("“[^”]*“"))) cout << "s2 matched" << endl;
    return 0;
}

输出:匹配s1

Perl代码:

use strict;
my $regexp = '“[^”]*”';
my $s1 = '“lips“';
my $s2 = '“lips’“';
print "s1 matched\n" if ($s1 =~ /“[^”]*“/);
print "s2 matched\n" if ($s2 =~ /“[^”]*“/);

输出:匹配s1

However, in JavaScript (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match), both strings match as expected.

Is the symbol special for a PCRE? Why is the second string not matching?