onepc 发表于 2011-5-16 12:45:59

[已解决]请问正则表达式里的用了多个(),想要最外面的()内容,怎么设置?

本帖最后由 onepc 于 2011-5-17 07:43 编辑

<td align="center">气温</td>
<td>28℃~24℃</td>
<td>29℃~25℃</td>
<td>31℃~26℃</td>
<td>32℃~26℃</td>
<td>33℃~26℃</td>
<td>31℃~25℃</td>
<td>28℃</td>

源码以上,
我用
$math ='(\d+℃(~\d+℃)?)'
$array = StringRegExp($sHTML , $math, 3)
这样得出的内容,他会把~24℃ 这个也放到数组。
我想要的只是外面的大括号内容,不要小括号里的内容。怎么设置?


$math ='(\d+℃(?:~\d+℃)?)'    ?:...表示不捉这个括号里的东东到数组里。

onepc 发表于 2011-5-16 12:49:21

本帖最后由 onepc 于 2011-5-16 12:52 编辑

$math ='\d+℃~\d+℃|\d+℃'
用这样的话,正常
我想问下。若是多个括号里的如何只要最外面的括号的内容。就像上面的$math ='(\d+℃(~\d+℃)?)'

easefull 发表于 2011-5-16 12:54:50

先取包含温度的<td>℃</td>段
然后每段分别取℃前的数值

easefull 发表于 2011-5-16 13:00:50

<td>(.*?℃.*?)</td>
页: [1]
查看完整版本: [已解决]请问正则表达式里的用了多个(),想要最外面的()内容,怎么设置?