使用正则匹配功能定义
Match function definition using regex
我想匹配函数定义。功能定义可以像
int foo () {
// Some statement
}
int foo(int a, int b){}
int foo ()
{
}
我写了一条正则 foos*([w, ]*)s*{
,并在原子文本编辑器中尝试了它,并且运行良好。但是,当我尝试在C 14中运行它时,它会给我Regex_error((。我的C 正则是regex b("foos*([w, ]*)s*{");
。我还尝试将括号为\(
,但仍然无法正常工作。
您的正则配音包含一个未设计的 {
char,在您在Regex101.com上测试的PCRE REGEX中很好,但是std::regex
默认的REGEX引擎不允许 {
匹配,该发动机应匹配字面的{
777。char。
此外,最好使用原始的字符串字面来定义正则图案,因为Regex Escape序列中的后斜线不需要逃脱。
因此,您可以将当前的正则置于
regex b(R"(foos*([w, ]*)s*{)");
或者,您可以通过用贪婪的点模式.*
替换[w, ]*
来修改从foo(
到最后一个){
的所有图案:
regex b(R"(foos*(.*)s*{)");
请参阅C 演示:
regex r(R"(foos*([w, ]*)s*{)");
string s("int foo () {n // Some statementn}nint foo(int a, int b){}nint foo ()n{n}");
for(std::sregex_iterator i = std::sregex_iterator(s.begin(), s.end(), r);
i != std::sregex_iterator();
++i)
{
std::smatch m = *i;
std::cout << m.str() << 'n';
}
输出:
foo () {
foo(int a, int b){
foo ()
{
相关文章:
- 类模板的成员功能的定义在单独的TU中完全专业化
- C++ - 没有自定义交换功能的移动分配运算符?
- 如何定义可变参数类模板的成员模板功能
- '_HAS_CXX17'宏是否可用于自定义项目标头以启用C++17 语言集功能?
- C++模板功能并定义特定情况
- 这种错误的原因是什么:将"功能"重新定义为不同类型的符号
- 功能原型,没有定义
- 如何在cmake工具链文件中设置编译功能,以便已知的自定义编译器使用target_compile_features
- 如何将标准::矢量插入具有自定义排序功能的 std::set 中
- C++ 添加编译器警告,以错误使用自定义打印/日志功能
- 为什么此C 功能定义不需要卷曲括号
- 使用clang获取功能定义
- 使用正则匹配功能定义
- 类功能定义但不称为(C )
- 选择性地将功能定义添加到Python名称空间
- C 使用功能定义中的if/其他语句以返回最小的数字
- C 功能定义和可变声明不匹配
- 全局功能定义
- Intellisense中缺少的功能定义C 2005-2013
- 头文件和源文件的功能定义