擅长:python、mysql、java
<p>试试看:</p>
<pre><code>#! /usr/bin/env python
import re
str = '8 y 13 houses, 13 y 8 houses, 13 y 13 houses, 8 y 8 houses, 120 y 8 houses, 8 y 120 houses, 13,5 y 8 houses, 13,5 y 120 houses'
regex = r'''
\b (
[012]? # number may go up to 29, so could have a leading 0, 1, or 2
[0-9] # but there must be at least one digit 0-9 here
(,[0-9])? # and the digits might be followed by one decimal point
)
\s* [y+] \s* # must be a 'y' or '+' in between
(
[012]? # followed by another 0-29
[0-9]
(,[0-9])? # and an optional decimal point
)
\s* houses \b # followed by the word "houses"
'''
for match in re.finditer(regex, str, re.VERBOSE):
print "found: %s and %s" % (match.group(1), match.group(3))
</code></pre>
<p>演示:</p>
^{pr2}$
<p>当正则表达式与输入中的字符串匹配时,第一个数字将位于<code>match.group(1)</code>中,第二个数字将位于<code>match.group(3)</code>中。在</p>