擅长:python、mysql、java
<p>你需要一个正则表达式来从这样的文本中获取数字:</p>
<pre><code>import re
int_numbers = re.compile('\d[\d ]*')
def extract_integer(text):
value_match = int_numbers.search(text)
if value_match:
try:
return int(value_match.group().replace(' ', ''))
except ValueError:
# failed to create an int, ignore
pass
</code></pre>
<p>该模式匹配后跟0个或更多个数字或空格的数字。在</p>
<p>演示:</p>
^{pr2}$
<p>如果在输入文本中需要<em>all</em>这样的数字,请使用<code>.finditer()</code>和生成器:</p>
<pre><code>def extract_integers(text):
for value_match in int_numbers.finditer(text):
try:
yield int(value_match.group().replace(' ', ''))
except ValueError:
# failed to create an int, ignore
pass
</code></pre>
<p>演示:</p>
<pre><code>>>> for i in extract_integers('4 300 123 times 42'):
... print i
...
4300123
42
>>> list(extract_integers('4 300 123 times 42'))
[4300123, 42]
</code></pre>