2013-08-01 38 views
0

的我甲肝字符串,如清單:Ø20X400 我需要提取的數字的第一個 - Ø之間和X取一個出兩個數字串出

我已經走了這麼遠來匹配一般的數字與\d+ - 就這麼簡單,因爲它是... 但我需要一個表達式來獲得的第一個值分開,而不是兩個都...

+2

如何'\ n +'匹配數字? – arshajii

+0

'\ n'意思是'換行',你想使用'\ d'這意味着'數字'。 –

+0

啊,我的壞,輸入錯誤:/ –

回答

3

您可以使用lookarounds (?<=..)(?=..)

(?<=Ø)\d+(?=X) 

或Java的風格:

(?<=Ø)\\d+(?=X) 

的第二種方法是使用捕獲組:

Ø(\d+)X 

Ø(\\d+)X 

然後你就可以提取組的內容。

+0

我以爲我知道*關於正則表達式的所有*直到我看到這個「lookaround」概念。涼! –

+0

@JimL .: lookaround是向後看和向前看的快捷方式。有關更多信息,請參閱www.regular-expressions.info。 –

1

正則表達式引擎,我知道解析\n作爲一個換行符。 \d用於數字。

下面的正則表達式給你一個Ø和捕獲組X之間的第一個數字:

^.*?Ø(\d+)X.* 

Regular expression visualization

Edit live on Debuggex

+0

在開始和''。^''部分沒有意義。*'部分在最後,除非他想要捕捉整個輸入。 – fejese

+0

感謝您使用Debuggex的鏈接! –

0

這個正則表達式會爲你做,(\d+?)X,這裏是一個Rubular to prove it。看,你想把數字分組在一起,但不要貪婪,結束X的評估。

+0

無論它是否貪婪,這都有效。 – MikeFHay

0

試試這個:

\d+(?=\D) 

應該找到第一個數字至極有一些不是數字提前

0

與正常的正則表達式,我會說:

Ø(\d+)X

此發現Ø字符,後跟一個或多個數字,後跟一個X.此外,這些數字將存儲在第一個捕獲e組。捕獲組從一個正則表達式實現到另一個正則表達式的實現有所不同,但這通常會由\1表示。捕獲組零,\0,通常是匹配的字符串本身。在這個版本中,\d表示數字0-9,但如果你的正則表達式引擎使用\n爲目的,使用方法:

Ø(\n+)X

相關問題