正则表达式 - 仅提取数字 - 除非遇到“...”

时间:2011-11-22 14:09:29

标签: regex pcre

考虑一个以可变数字开头的可变长度字符串,然后是非数字,然后是任何数字。

Eg. 283432478($#*a433sd

(忽略SO的着色)

这里我想提取数字部分283432478。没什么大不了的。

然而,有时这个字符串非常大,中间的一部分已被...

手动和随意替换
Eg. 23445678404325jkla#$s23k$#$     =>     2344567840...3k$#$

我认为它可能发生在字符串中的任何地方,也不会产生固定长度的字符串。

如果它看到...,我希望相同的正则表达式匹配失败。

有什么建议吗?

1 个答案:

答案 0 :(得分: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.