1
dallaslu 2013-04-24 09:24:13 +08:00 1
搜索:正则表达式 半小时
|
2
rrfeng 2013-04-24 09:37:12 +08:00
正则表达式没有确定的写法
只有确定的要求,还要确定的语言(比如perl python正则完全不一样) so,此问题无法回答。 |
3
rrfeng 2013-04-24 09:37:56 +08:00
啊,没注意是在 PHP 版……
|
5
lcxz 2013-04-24 09:50:41 +08:00 1
/\<a[^<]*?class=\"en2d_n\">[\s\S]*?\<\/a\>/ig JS
其它语言自己变通下 |
7
yakczh 2013-04-24 11:02:23 +08:00
preg_match_all("/<a.*?><\/a>/m",$text,$out);
|
8
h2ero 2013-04-24 11:21:16 +08:00 1
《精通正则表达式》这本书确实不好懂,建议先看下《正则指引》比较好,这本书的作者是上一本书的作者。可以入手下后一本再看看。
<?php $str = <<<EOF <a href="javascript:getFilmByShow('27173782','','01','1号厅','2125','45','0','F25220','特种部队:全面反击(3D)','2013-04-24','270137','sp002','44090301','xxx影剧院','','');" class="en2d_n">21:25 | <b>¥45</b></a> EOF; echo $str; $pattern = "/<a(?:.*?)getFilmByShow\((?P<infos>.*?)\)(?:.*?)>(?P<time>.*?)\|\s*<b>(?P<price>.*?)<\/b>\s*<\/a>/ism"; preg_match_all($pattern, $str, $res); var_dump(explode(",",$res['infos'][0])); var_dump($res); |
9
bitsmix 2013-04-24 11:25:10 +08:00
精通正则表达式 乱序无章
你真是好样儿的 |
10
h2ero 2013-04-24 11:30:38 +08:00
|
12
PrideChung 2013-04-24 11:48:21 +08:00 1
不要用正则表达式来解析网页,HTML的复杂程度超出了正则表达式的能力范围,很难写出滴水不漏的正则,就算你勉强写出来,过两天可能自己都看不懂了,完全无法维护。
更多讨论可以看这篇文章 http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html 更好的做法是用DOM parser来解释: javascript直接用jQuery PHP有Extension http://us.php.net/manual/en/book.dom.php Ruby有Nokogiri这个Gem http://nokogiri.org/ Python不太熟,貌似有自带HTMLParser的库 |
13
xdeng OP @PrideChung 貌似你说的很不错
|