2011-11-22 43 views
1

考慮一個可變長度的字符串,以可變的數字位數開始,然後是非數字位,然後是任何數字。正則表達式 - 只提取數字 - 除非遇到「...」

Eg. 283432478($#*a433sd 

(忽略SO的着色)

在這裏,我想提取數字部分283432478。沒什麼大不了。

但是有時候這個字符串是非常大的,在中間部分已手動和隨意取代...

Eg. 23445678404325jkla#$s23k$#$  =>  2344567840...3k$#$ 

通過隨意我的意思是它可以在字符串中的任何地方發生,也不會導致固定長度字符串。

我想要相同的正則表達式失敗匹配,如果它看到一個...

有什麼建議嗎?

+0

感謝編輯冠軍邁克爾 - 我很困惑如何字呢。 – jontyc

回答

4

你可以試試:

^([0-9]+)(?!.*\.\.\.) 

See it

^   - Start anchor 
([0-9]+)  - Capture one more digits 
(?!.*\.\.\.) - Negative lookahead to ensure a ... is not present. Since . is a 
       regex meta-char, you need to escape it to mean a literal period. 
+0

我可以看到它確實有效,但我不明白什麼是停止[0-9] +匹配2344567在2344567840 ... 3k $#字符串上面,和(?!。* \。\。\。)。匹配840?我原以爲這會匹配貪婪的+ – jontyc

+1

@jontyc去看看goo.gl/yW9x7s – Cheshar