c++ - 正则表达式 - 将所有内容与末尾的数字匹配

标签 c++ regex

我有一个格式如下的输入:我们在字符串的开头有任意数量的空格,然后我们有一个可以是任何内容的数据子字符串,并且它以非空格字符开头和结尾。在数据之后,我们再次有任意数量的空格(至少一个),一个数字和空格再次......

这个规范确实不准确,我想知道如何匹配它。显然,匹配开头和结尾的空格以及末尾的数字相当容易。最终的正则表达式如下所示: R("\s*(X)\s+([0-9]+)\s*)" 其中 (X)是与一切相配的东西。但是我不确定这个 (X) 应该是什么样子。如何解决这个问题?

还有一件事 - 如果正则表达式匹配整行,那么我想要获取末尾的数据和数字,因此仅查找数字并不是解决方案。

澄清:在最终的正则表达式中,我想将子字符串和最终数字作为两个正则表达式组获取。

最佳答案

你可以使用

^\s*(\S.*?)\s+([0-9]+)\s*$

含义:

  • 字符串开头^
  • 任意数量的空白字符\s*
  • 非空白 \S
  • 任何东西,但不贪婪.*?
  • 一个或多个空白字符\s+
  • 一个数字[0-9]+
  • 任意数量的空白字符\s*
  • 字符串结尾$

保留修剪后的数据和数量作为匹配结果

关于c++ - 正则表达式 - 将所有内容与末尾的数字匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33154584/

相关文章:

c++ - 如何用父类实例化抽象子类

c++不使用C标准库将字符串和int转换为char *

javascript - 使用 JavaScript 舍入表单中的用户输入

python - 正则表达式的最坏情况分析

java - java中的单词正则表达式

javascript - 如何替换 js 堆栈跟踪以包含 "line"和 "position"文本?

java - 我的正则表达式搜索仅打印出最后一个匹配项

c++ - OSX "clang++ -lboost_mpi"` ->"ld: library not found for -lboost_mpi"在 brew install boost --with-mpi 之后

c++ - 模板类–找不到​​符号

c++ - 如何在mac中编辑/usr/include/dlfcn.h