繁体   English   中英

编写正则表达式模式 C++

[英]Writing a Regex pattern c++

我需要帮助来完成这个正则表达式模式。

这是完整的字符串:

INSERT((1574,"Greene County, Missouri",mo,50,29,77,05000US29077,285449),geography)

这是我尝试使用 regex_search 搜索的字符串部分:

(1574,"Greene County, Missouri",mo,50,29,77,05000US29077,285449)

这是我的正则表达式模式和代码:

regex pattern2("\\(|[0-9]|[a-z]|[A-Z]|\,|\"|");
regex_search (substring,matcher,pattern2);
   for(auto x:matcher)
   {
     substring1 = matcher.suffix().str();
     cout << substring1 << endl;
   }

子串将输出:

1574,"Greene County, Missouri",mo,50,29,77,05000US29077,285449),geography)

所以不是我需要的。 希望得到一些帮助。

要匹配(1574,"Greene County, Missouri",mo,50,29,77,05000US29077,285449)您可以使用捕获组否定字符类

[^*()\r\n]+\((\([^()\r\n]+\))[^()\r\n]+\)

在零件中

  • [^*()\\r\\n]+匹配 1+ 次除所列字符以外的任何字符
  • \\(匹配第一个左括号
  • (捕获组 1
    • \\(匹配第二个左括号
      • [^()\\r\\n]+匹配 1+ 次除所列字符以外的任何字符
    • \\)关闭第二个左括号
  • )关闭第 1 组
  • [^()\\r\\n]+
  • \\)关闭第一个左括号

正则表达式演示

您还可以通过使用重复的非捕获组并使用您打算使用的字符类中允许的字符来使模式更加严格:

[a-zA-Z0-9]+\(\(((?:[a-zA-Z0-9]+|"[a-zA-Z0-9]+(?:,? [a-zA-Z0-9]+)+")(?:,(?:[a-zA-Z0-9]+|"[a-zA-Z0-9]+(?:,? [a-zA-Z0-9]+)+"))+)\),[a-zA-Z0-9]+\)

正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM