TR1正则表达式:捕获组
TR1 regex: capture groups?
我正在使用TR1正则表达式(用于VS2010),我要做的是为一个名为"name"的组搜索特定模式,并为一个称为"value"的组寻找另一个模式。我想我想要的是一个捕获组,但我不确定这是否是正确的术语。我想将模式"[^:\r\n]+):/s"的匹配项分配给名为"name"的匹配列表,将模式"[^\ r\n]+。
到目前为止,我的正则表达式模式是
string pattern = "((?<name>[^:rn]+):s(?<value>[^rn]+)rn)+";
但是regex T4R1标头在程序运行时不断抛出异常。我的模式语法有什么问题?有人能展示一个能实现我想要实现的目标的示例模式吗?
此外,如何可能在要匹配的模式中包含子字符串,而不在结果中实际包含该子字符串?例如,我想匹配模式的所有字符串
"http://[[:alpha:]]rn"
,但我不想在返回的匹配结果中包含子字符串"http://"。
C++TR1和C++11正则表达式语法不支持命名捕获组。您将不得不执行未命名的捕获组。
此外,确保你不会遇到逃避问题。您将不得不对某些字符进行两次转义:一次用于C++字符串,另一次用于正则表达式。模式(([^:rn]+):ss([^rn]+)rn)+
可以写成这样的C++字符串文字:
"([^:\r\n]+:\s\s([^\r\n]+)\r\n)+"
// or in C++11
R"xxx(([^:rn]+:ss([^rn]+)rn)+)xxx"
Lookbehinds也不受支持。您必须通过使用捕获组来绕过这个限制:使用模式(http://)([[:alpha:]]rn)
,只捕获第二个捕获组。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- C++正则表达式替换整个单词
- 用C++编写正则表达式的正确方法是什么?
- 如何从Stroustrup的C++书中解释这个正则表达式?
- 为什么这个正则表达式C++在括号表达式中抛出无效范围异常?
- 为什么这个正则表达式不适用于 c++ TR1?
- TR1正则表达式:捕获组