2015-10-18 70 views
1

我有一串代表3個不同長度的數字。我需要挑出字符串中的第二個長度,但找不到匹配中的空格。這是一個字符串的例子。它在點之後總是有6位數字,但在它變化之前。在這種情況下,我需要準確地匹配907.086614正則表達式在比賽中跳過空格

1417.322835 907.086614 2.267717 

^\s(\d+\.\d{6}) 

我已經玩過不同的背後,但不能排除白色空間。

+0

感謝所有的建議,我現在的問題時,我已經將需要這個表達式它沒有積極lookbehinds和積極前瞻的支持應用程序嘗試這樣做。 Bummer :-( 所以有沒有其他的方式可以在沒有積極向後看的情況下工作? –

+0

在我的答案中使用第二個模式如果它工作告訴我 –

回答

0

你可以試試這個

(?<=\s)(\d+\.\d{6})(?=\s)

看到demo

但是,如果你仍然想使用你的模式,去掉開頭線錨^的搭配group 1

\s(\d+\.\d{6})

看到demo

+0

感謝,似乎也工作 –

+0

感謝詹姆斯Jelo4kul第二種模式時,在其他應用程序中使用。我懷疑自從前面的空間被選中以後,顯然它在另一個應用中被忽略了。也許是因爲這個值被另一個應用程序視爲一個長度值。 –

0

如何與後面像正面看:

(?<=\s)(\d+\.\d{6}) 

Online Demo

(?<=\s)正回顧後 - 斷言,下面的正則表達式可以是\s

+0

是的我已經嘗試過,但它也會選擇最後一部分作爲以及 我獲得了兩場比賽。 1. 907.086614 2. 2.267717 我只想第一部分。 –

+0

這是因爲您在使用的時候似乎並不適用於您的正則表達式 – Dalorzo

1

潛在的面與\s的效果是它匹配回車。

Example mistaken match

既然你正在尋找一組彩車的第二列,最好是明確的:

\d[ \t](\d+\.\d+)[ \t]\d 

^       trailing digit from first col 
^      a single space or tab 
     ^^^   capture float 
       ^  single space or tab 
        ^ leading digit of third col 

Demo

您還可以將之間的捕獲向前看和向後看:

(?<=\d[ \t])(\d+\.\d+)(?=[ \t]\d) 

Demo

+0

感謝,似乎工作的全局修改。 –