Netfox 发表于 2011-1-20 00:39:33

怎么用正则表达式获取以下代码中的中文内容

<td colspan="2" align="left" style="font-size:14px; color:#000000;"><a href="url" target="_blank">华硕主板M4A88T-M(集成AMD 880G DDR3 全固态)</a></td>

happytc 发表于 2011-1-20 01:03:19

$str = '<td colspan="2" align="left" style="font-size:14px; color:#000000;"><a href="url" target="_blank">华硕主板M4A88T-M(集成AMD 880G DDR3 全固态)</a></td>'
$str = StringRegExpReplace($str, "[\x00-\xff]", "")

Netfox 发表于 2011-1-20 01:48:06

谢谢您的帮助,不过不能得到“华硕主板M4A88T-M(集成AMD 880G DDR3 全固态)”这样的全部内容,你这个表达式得到的是“华硕主板全固态”。还有能讲解一下\x00-\xff是什么意思吗?

happytc 发表于 2011-1-20 01:58:11

谢谢您的帮助,不过不能得到“华硕主板M4A88T-M(集成AMD 880G DDR3 全固态)”这样的全部内容,你这个表达式 ...
Netfox 发表于 2011-1-20 01:48 http://www.autoitx.com/images/common/back.gif

那就请把问题写清楚呀
看看你的标题是:获取以下代码中的中文内容

happytc 发表于 2011-1-20 02:01:53

你要先把你倒底要得到什么,写清楚了才行,象“不过不能得到“华硕主板M4A88T-M(集成AMD 880G DDR3 全固态)”,倒底是个特例还是泛指。若是泛指,是不是都是同样格式等等

Netfox 发表于 2011-1-20 02:18:38

不好意思,没把问题阐述清楚,我是想要得到“华硕主板M4A88T-M(集成AMD 880G DDR3 全固态)”这串中文产品名。

happytc 发表于 2011-1-20 02:43:16

还是没有说清楚,字符串特针呀,如是不是都是象这样:华硕主板M4A88T-M(集成AMD 880G DDR3 全固态)

都有括号,还前后括号一个英文的,一个是中文的,还是:>华硕主板M4A88T-M(集成AMD 880G DDR3 全固态)<

都是前后带个“>"和”<"等等。用正则,就是利用String里的特针来取呀。
你说不清,就多举例子,原串是啥,你想得到的又是啥

Netfox 发表于 2011-1-20 03:00:02

我想得到的就是一个产品名,请打开http://www.it-hztc.com/product.asp?tid=452这个连接,获取所有戴尔显示器的名称。

happytc 发表于 2011-1-20 05:08:14

$str ='src="uploadfile/2010122814124327235.jpg"border="0" alt="戴尔E190S19正" onload=''javascript'

$str = StringRegExpReplace($str, '(^.*")(戴尔.*?)(".*$)', "\2")

3mile 发表于 2011-1-20 09:34:48

#include <array.au3>
#include <INet.au3>
$urlsource=_INetGetSource ( "http://www.it-hztc.com/product.asp?tid=452" )
If Not @error Then
        $str=StringRegExp($urlsource,'\<A.*\>(.*?)(?=\<\/A\>)',3)
        _ArrayDisplay($str)
EndIf

Netfox 发表于 2011-1-20 15:53:34

回复 10# 3mile


    非常谢谢,不过,这样得到结果,只要是有超连接的文字都获取到了。如图,
我要的结果只是商品名称。

水木子 发表于 2011-1-20 16:32:18

回复 11# Netfox

纯体力活儿! 用10楼3G的代码,更换下表达式。

(?<=title=")([(?:戴尔)(?:DELL)][^\h]+\h*[^\h\(三]+).+?target="

ghl781258 发表于 2011-1-20 19:50:38

好几种方法都可以实现哦

sxd 发表于 2011-1-20 19:59:05

如果只是要用到一次那就别人帮你写个
不过看你的需求 应该不会只用一次 还是自己学点基础的正则吧
这样别人给了正则自己也能修修改改

ghl781258 发表于 2011-1-20 20:15:43

10楼的没有广谱性,仅是特定页面的特例。换成如下:(但不适用楼主本意)

#include <array.au3>
#include <INet.au3>
$urlsource=_INetGetSource ( "http://www.it-hztc.com/product.asp?tid=452" )
;~ MsgBox(0, '', $urlsource)
If Not @error Then
      $str=StringRegExp($urlsource,'\<.*\>(.*?)(?=\<\/\>)',3);;;;<a\></a>或者<A\></A>
      _ArrayDisplay($str)
EndIf
页: [1] 2
查看完整版本: 怎么用正则表达式获取以下代码中的中文内容