的我甲肝字符串,如清單:Ø20X400
我需要提取的數字的第一個 - Ø之間和X取一個出兩個數字串出
我已經走了這麼遠來匹配一般的數字與\d+
- 就這麼簡單,因爲它是... 但我需要一個表達式來獲得的第一個值分開,而不是兩個都...
的我甲肝字符串,如清單:Ø20X400
我需要提取的數字的第一個 - Ø之間和X取一個出兩個數字串出
我已經走了這麼遠來匹配一般的數字與\d+
- 就這麼簡單,因爲它是... 但我需要一個表達式來獲得的第一個值分開,而不是兩個都...
您可以使用lookarounds (?<=..)
和(?=..)
:
(?<=Ø)\d+(?=X)
或Java的風格:
(?<=Ø)\\d+(?=X)
的第二種方法是使用捕獲組:
Ø(\d+)X
或
Ø(\\d+)X
然後你就可以提取組的內容。
我以爲我知道*關於正則表達式的所有*直到我看到這個「lookaround」概念。涼! –
@JimL .: lookaround是向後看和向前看的快捷方式。有關更多信息,請參閱www.regular-expressions.info。 –
在開始和''。^''部分沒有意義。*'部分在最後,除非他想要捕捉整個輸入。 – fejese
感謝您使用Debuggex的鏈接! –
試試這個:
\d+(?=\D)
應該找到第一個數字至極有一些不是數字提前
與正常的正則表達式,我會說:
Ø(\d+)X
此發現Ø
字符,後跟一個或多個數字,後跟一個X.此外,這些數字將存儲在第一個捕獲e組。捕獲組從一個正則表達式實現到另一個正則表達式的實現有所不同,但這通常會由\1
表示。捕獲組零,\0
,通常是匹配的字符串本身。在這個版本中,\d
表示數字0-9,但如果你的正則表達式引擎使用\n
爲目的,使用方法:
Ø(\n+)X
如何'\ n +'匹配數字? – arshajii
'\ n'意思是'換行',你想使用'\ d'這意味着'數字'。 –
啊,我的壞,輸入錯誤:/ –