Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;正则表达式匹配和模式捕获_C++_Regex - Fatal编程技术网

C++ C++;正则表达式匹配和模式捕获

C++ C++;正则表达式匹配和模式捕获,c++,regex,C++,Regex,正则表达式在我熟悉的脚本语言(如bash和perl)中非常简单。但是我在C++中不是那么擅长。 这就是我想要的: 如果字符串与此模式匹配,则捕获从第一个字符开始的所有内容。有人能给我举一个基本的例子来说明如何做到这一点吗?我看到了一些匹配的示例,但没有说明如何提取子模式 谢谢 编辑:没有std::regex有没有办法做到这一点?我受到早期版本的gcc的限制,即C++11之前的版本,考虑到您使用std::regex的限制,我认为下一个选择是sscanf char result [64]; ssca

正则表达式在我熟悉的脚本语言(如bash和perl)中非常简单。但是我在C++中不是那么擅长。 这就是我想要的:


如果字符串与此模式匹配,则捕获从第一个
字符开始的所有内容。有人能给我举一个基本的例子来说明如何做到这一点吗?我看到了一些匹配的示例,但没有说明如何提取子模式

谢谢


编辑:没有std::regex有没有办法做到这一点?我受到早期版本的gcc的限制,即C++11之前的版本,考虑到您使用std::regex的限制,我认为下一个选择是sscanf

char result [64];
sscanf (input, "leg%*[0-9]%63c", result);

这与后跟任意数字的“leg”相匹配,但(多亏了星号)不会将任何数字指定给任何东西。然后它将剩余部分(最多63个字符)读入结果。明显的缺点是,结果是一个char数组而不是std::string,而且许多人不熟悉scanf扫描集转换。第三个潜在缺点是扫描集中的“0-9”在技术上没有定义——但本质上所有编译器都以显而易见的方式对其进行解释。如果您需要严格的可移植性,请使用“0123456789”来代替。

leg[0-9]+\uU9++(.*)
然后抓取捕获,看看参考资料,值得一提的是,
std::regex
只是c++11标准(op没有标记)。在gcc 4.9Thank@AbhishekGuptaI之前它是不可用的。我猜您最好使用第三方正则表达式库,或者只使用while/for循环编写它,以进行一般字符串操作。如果你不知道发生了什么,像这样的事情可能会被证明是鼓舞人心的。