2015-10-15 101 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

相關問題