正则表达式 - 最后将所有内容与数字相匹配

时间:2015-10-15 17:13:07

标签: c++ regex

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

这个规范真的不太准确,我想知道如何匹配它。显然很容易匹配开头和结尾的空格和最后的数字。最终的正则表达式看起来像这样:R("\s*(X)\s+([0-9]+)\s*)"其中(X)匹配的东西非常匹配。但是,我不确定这个(X)应该是什么样子。如何解决这个问题?

还有一件事 - 如果正则表达式匹配整行,那么数据和最后的数字是我想要抓取的,所以只是找到一个数字不是解决方案。

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

1 个答案:

答案 0 :(得分:2)

您可以使用

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

含义:

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

将修剪后的数据和数字保持为匹配结果