擅长:python、mysql、java
<p>对正则表达式执行此操作非常简单:</p>
<pre><code>>>> import re
>>> p = re.compile(r'[^\d-]*(-?[\d]+(\.[\d]*)?([eE][+-]?[\d]+)?)')
>>> def test(seq):
for s in seq:
m = p.match(s)
if m:
result = m.groups()[0]
if "." in result or "e" in result or "E" in result:
print "{0} -> {1}".format(s, float(result))
else:
print '"{0}" -> {1}'.format(s, int(result))
else:
print s, "no match"
>>> test(s)
"1 0" -> 1
"3 of 12" -> 3
"3 1/2" -> 3
"3/12" -> 3
3.15 seconds -> 3.15
3.0E+102 -> 3e+102
"what about 2?" -> 2
"what about -2?" -> -2
2.10a -> 2.1
</code></pre>