将Javascript正则表达式模式转换为C++std::regex的规则
Rules to convert a Javascript Regular Expression pattern to C++ std::regex?
我总是被正则表达式模式弄糊涂,不仅是在javascript、c#和c++等语言之间,即使是一种语言,我也很难记住每次尝试使用它的时间。
我有一个javascipt正则表达式:
var reg = new RegExp(/^.*sdp'":'"(.*)'",.*$/);
如果我把它转换成c++std::regex,它应该是什么:
std::regex rgx("/^.*sdp'":'"(.*)'",.*$/"); // is this correct?
有规则可以转换吗?感谢
我不确定JavaScript正则表达式为什么要转义":我不认为这是一个需要转义的特殊字符(但我不完全确定)。如果正则表达式中的引号需要转义,则需要对引号进行转义,因为在使用普通字符串时,引号被认为是字符串的末尾和反斜杠:
std::regex rgx("/^.*sdp'''":'''"(.*)'''",.*$/");
由于这几乎是不可读的,C++11有原始字符串文字:
std::regex rgx(R"(/^.*sdp'":'"(.*)'",.*$/)");
假设正则表达式不需要对引号字符进行转义,则只需要对字符串进行转义,即,您确实只需要使用
std::regex rgx("/^.*sdp'":'"(.*)'",.*$/");
这个字符串是一个例子,如果你想使用原始字符串文字,你就不能使用简单的原始字符串文字。因为它包括终止原始字符串文字的序列")"。你可以选择一些字符以不同的方式开始和终止原始字符串文字:
std::regex rgx(R"abc(/^.*sdp":"(.*)",.*$/)abc");
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- Regex代码只允许一个空格
- Regex匹配除“”之外的所有字符;.js”;
- RegExp:匹配Javascript中除regex值之外的所有内容
- Javascript RegEx validator
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 用Javascript修改内部标记的CSS规则
- 制作一个regex来验证只有一个数字的字符串
- RegEx JavaScript:数字后的符号提取
- PHP和Javascript之间的Regex差异
- JS RegEx for date&名称规则
- 将Javascript正则表达式模式转换为C++std::regex的规则
- 用户名和电子邮件Regex与非常具体的规则
- JavaScript Regex添加了一个仅用于正斜杠的规则
- 从没有'不符合Regex规则
- Regex验证规则
- JQuery验证Regex规则不起作用
- JQuery validate - pattern规则不如自定义regex方法好用
- Regex实现偶数负符号规则
- Javascript-Regex规则,在span标记中找不到XX