vv3509 发表于 2012-4-4 09:39:47

[已解决]求助正则取网页文字

本帖最后由 vv3509 于 2012-4-5 19:54 编辑

2012年4月5日19时7分12秒 387A请问如何取到387A
这4个字符,刷新会改变,这四个字符也可能是字母数字混合。
谢谢!!!

user3000 发表于 2012-4-4 09:56:22

有字母和数字:
StringRegExp($str, '\d{1,2}分\d{1,2}秒\h*(\w*)<', 3)

afan 发表于 2012-4-4 11:14:52

(\H+)<p

lixiaolong 发表于 2012-4-4 11:17:42

回复 1# vv3509

这是全部的网页源码吗?

apoorman1986 发表于 2012-4-4 12:57:40

本帖最后由 apoorman1986 于 2012-4-4 16:06 编辑

(?<=\s)\w{4}(?=<p)

lpxx 发表于 2012-4-4 15:31:05


afan 发表于 2012-4-4 11:14 http://www.autoitx.com/images/common/back.gif

A大,这个\H是什么意思呢?

happytc 发表于 2012-4-4 15:45:52

回复 6# lpxx


    \H          any character that is not a horizontal whitespace character.

user3000 发表于 2012-4-4 15:46:57

回复 6# lpxx

\h 是一行内的空白字符, \H 相反, 为非空白字符

afan 发表于 2012-4-4 16:08:03

回复 6# lpxx


    正如上面各位所说,就是“非水平空格”字符

xms77 发表于 2012-4-5 13:05:39

回复 2# user3000
我的想法也是这样的,哎,看A大的这则,怎么我写的复杂的时候,他的简单,我写的简单的时候,他的复杂,看都看不懂,天书,哎!

afan 发表于 2012-4-5 14:15:07

回复user3000
我的想法也是这样的,哎,看A大的这则,怎么我写的复杂的时候,他的简单,我写的简单的时 ...
xms77 发表于 2012-4-5 13:05 http://www.autoitx.com/images/common/back.gif


    个人认为正则表达式的所谓简单和复杂并非只看表达式的长短,而应该首先考虑执行效率(表达式的长短与执行效率无必然的联系),在此前提下可能简单点的表达式可能更好理解。

lixiaolong 发表于 2012-4-5 16:54:23

本帖最后由 lixiaolong 于 2012-4-5 16:56 编辑

回复 10# xms77

afan版主说的对,应该要考虑效率,也要考虑情况.
像楼主的那么小的网页代码(\H+)<p就足够了.
下面是随便写了几个例子,它们都可以匹配3828的,【简单】不一定效率高.

最注意的是: 错误的的正则表达式可能产生一个死循环,使 CPU even(偶校验)崩溃.\d{4}年\d+月\d+日\d+时\d+分\d+秒\h(\d+)<p(\S+)<p(\d+)<p\d{4}\D\d\D\d\D\d\D\d+\D\d+\D\h(\d+)<p(?m)^\d{4}\D\d\D\d\D\d\D\d+\D\d+\D\h(\d+)<p

user3000 发表于 2012-4-5 17:16:17

回复 12# lixiaolong
楼主说的含糊不清?--- '也会包含字母和数字'
如果他还要匹配字母, 你给出的后面几个正则就不能用了.

我从没用正则处理过大数据. 所以对正则效率的理解不是太'深刻'.
个人喜欢追求准确并"唯一"的匹配(匹配结果尽可能少)

按A版的样式,(\H+)<p其实我心里还是有点疑惑的, 如果匹配的字符串里有多个 '<p' 存在呢?
是不是要这样 (\H+)?<p 加个最小匹配限制才行?

老实说, 勉强会用正则,说得不对, 请多指教!

lixiaolong 发表于 2012-4-5 17:52:01

本帖最后由 lixiaolong 于 2012-4-5 17:53 编辑

回复 13# user3000

上面的只是个例子,楼主说的'也会包含字母和数字'到底我不清楚.
如果包含中文就不能使用\w.

(\H+)? 这么写(\H+)是可能有,可能没有,它可以匹配3828,也可以匹配<p前面的位置.

如果网页代码是这样(\H+)?<p的匹配结果是【3828<p】.2012年4月4日9时34分58秒 3828<p<p align="center" style="font-size:12px">肯定是4个字符的话可以这么写.(\H{4})<p也可以这么写.([^\s<p]+)<p写法是很多的.

afan 发表于 2012-4-5 18:21:21

回复lixiaolong
楼主说的含糊不清?--- '也会包含字母和数字'
如果他还要匹配字母, 你给出的后面几个正 ...
user3000 发表于 2012-4-5 17:16 http://www.autoitx.com/images/common/back.gif


    一般来说,正则表达式都是“满足既定的条件”即可,否则可能做无谓的分析判断。如楼主所提供的字符串就没必要做多余的分析。倘若楼主有更多的条件,他应该提出。对于正则方面的提问,提问者应提供尽量全的“源”条件,如若没有,则视为仅此而已。
页: [1] 2
查看完整版本: [已解决]求助正则取网页文字