javascript - 如何使用 ECMAScript 正则表达式整理序列\"?

标签 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);

如果我删除 [[. .]],它运行良好,results[0] 按预期返回 \",但如前所述,我希望此序列可用作为字符类。

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

最佳答案

所以我想出了我哪里出错了,我想我会把它留在这里以防万一有人偶然发现它。

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

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

\"(?:[^\"^\\\\]+|(?:\\\\\\\\)+|\\\\\")*\"

表示尽可能多地获取字符,前提是字符不是引号或反斜杠,如果不匹配,则首先尝试匹配偶数个反斜杠(以允许分隔此字符),或者其次是定界引号。这个非捕获组被匹配尽可能多的次数,只有当它到达 \" 时才停止。

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

关于javascript - 如何使用 ECMAScript 正则表达式整理序列\"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173532/

相关文章:

c++ - 如果你正在交换 c 字符串,内存分配也会交换吗?

javascript - 使用正则表达式在随机字符串中准确查找字母

php - 用 BR 标签替换换行符,但只在 PRE 标签内

regex - Asterisk 正则表达式: Invalid preceding regular expression

javascript - 按钮未显示在 Dom :'Bfrtip' 中

c++ - Qt/C++ QTcpSocket 导致内存泄漏,不知道为什么

c++ - 如何缩短单例调用?

javascript - React - Axios 正在将未定义的文件数据发送到 Node 服务器

javascript - 如何在jquery中获取html span元素的值?

javascript - 从数组中的每个字符串中删除引号 - Javascript