2015-10-15 2037 views
2

我有一个输入格式是这样的:我们有任意数量的空格在字符串的开始,然后我们有一个数据子字符串可以是任何东西,它开始和以非空白字符结尾。数据后,我们再次有任意数量的空格(至少一个),一个数字和空格再次...正则表达式 - 匹配所有与数字结尾

这个规范是真的不准确,我想知道如何匹配它。在最后匹配开始和结束的空格和数字显然是相当容易的。最终的正则表达式如下所示:R("\s*(X)\s+([0-9]+)\s*)"其中(X)是匹配所有内容的匹配项。不过,我不确定这个(X)应该是什么样子。如何解决这个问题呢?

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

说明:在最终的正则表达式中,我想抓取子串和最终数字作为两个正则表达式组。

+0

这不符合一个数字吗?我希望数据和数字能够被分开的数据块“匹配”。 – qiubit

+1

下面是一个数据的例子:*不能按预期工作:'Foo234bar 456',然后我想抓住“Foo234bar”和“456”,这个匹配“Foo234” – qiubit

回答

2

您可以使用

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

含义:

  • 字符串的开始^
  • 任意数量的空格字符\s*
  • 非空白\S
  • 什么,但不贪婪.*?
  • 一个或多个空格字符\s+
  • 若干[0-9]+
  • 任何数目的空格字符\s*
  • 字符串$

保持作为匹配结果的修整数据和数字

的端部的
+0

'\ S。* \ S' - 这个片段是否会匹配长度为1的数据,即使有两个'\ S'? (例如,这将工作为'123'?) – qiubit

+0

@qiubit:不......我认为数据至少有两个字符;固定...请参阅编辑版本。 – 6502

+0

现在,这将如何工作'Foo 234栏456'?如果我正确理解它,它将匹配“Foo”和“234”,并且我想匹配“Foo 234 bar”和“456”。 – qiubit