Javascript 如何整理顺序\“;使用ECMAScript正则表达式?

Javascript 如何整理顺序\“;使用ECMAScript正则表达式?,javascript,c++,regex,Javascript,C++,Regex,我试图构造一个正则表达式,将带分隔符的语音标记(\“)视为单个字符 以下代码编译良好,但在尝试初始化rgx时终止,并使用libc++抛出错误Abort trap:6 std::regex rgx("[[.\\\\\".]]"); std::smatch results; std::string test_str("\\\""); std::regex_search(test_str, results, rgx); 如果我删除[[…]],它会正常运行,结果[0]按预期返回\“,但如上所述,我希望

我试图构造一个正则表达式,将带分隔符的语音标记(
\“
)视为单个字符

以下代码编译良好,但在尝试初始化rgx时终止,并使用libc++抛出错误
Abort trap:6

std::regex rgx("[[.\\\\\".]]");
std::smatch results;
std::string test_str("\\\"");
std::regex_search(test_str, results, rgx);
如果我删除
[[…]]
,它会正常运行,
结果[0]
按预期返回
\“
,但如上所述,我希望此序列可用作字符类


编辑:好的,我现在意识到我以前对整理序列的理解是不正确的,它不起作用的原因是
\\\\\“
未定义为序列。所以我的新问题是:是否有可能定义整理后的序列?

所以我找出了哪里出了问题,并认为我应该把这个放在这里,以防有人无意中发现它

您可以使用
(?:sequence)
指定被动字符组,从而允许将量词应用于字符类。也许不完全是我最初的要求,但至少在我的情况下实现了同样的目的

为了匹配以双引号开头和结尾的字符串(包括结果中的这些字符),但允许在字符串中使用分隔引号,我使用了表达式

\"(?:[^\"^\\\\]+|(?:\\\\\\\\)+|\\\\\")*\"
如果字符不是引号或反斜杠,那么如果不匹配,则首先尝试匹配偶数个反斜杠(以允许对该字符进行分隔),或者第二个是分隔的引号。此非捕获组被匹配的次数尽可能多,仅在到达
\“
时停止


我无法评论它的效率,但它确实有效。

因此我找出了哪里出了问题,并认为我应该把它留在这里,以防有人无意中发现它

您可以使用
(?:sequence)
指定一组被动字符,允许将量词应用到字符类中。可能与我最初要求的不完全一样,但至少在我的情况下,实现了相同的目的

为了匹配以双引号开头和结尾的字符串(包括结果中的这些字符),但允许在字符串中使用分隔引号,我使用了表达式

\"(?:[^\"^\\\\]+|(?:\\\\\\\\)+|\\\\\")*\"
如果字符不是引号或反斜杠,那么如果不匹配,则首先尝试匹配偶数个反斜杠(以允许对该字符进行分隔),或第二个带分隔符的引号。此非捕获组将尽可能多地匹配,仅在到达
\“
时停止

我无法评论这项技术的效率,但它确实有效