找回密码
 加入
搜索
查看: 12198|回复: 26

[系统综合] [已解决]求助正则取网页文字

[复制链接]
发表于 2012-4-4 09:39:47 | 显示全部楼层 |阅读模式
本帖最后由 vv3509 于 2012-4-5 19:54 编辑
2012年4月5日19时7分12秒 387A
请问如何取到387A
这4个字符,刷新会改变,这四个字符也可能是字母数字混合。
谢谢!!!

评分

参与人数 1金钱 -30 贡献 -2 收起 理由
afan -30 -2 请还原原始提问内容

查看全部评分

发表于 2012-4-4 09:56:22 | 显示全部楼层
有字母和数字:
StringRegExp($str, '\d{1,2}分\d{1,2}秒\h*(\w*)<', 3)
发表于 2012-4-4 11:14:52 | 显示全部楼层
(\H+)<p

评分

参与人数 1金钱 +10 贡献 +1 收起 理由
xms77 + 10 + 1 很简洁啊!

查看全部评分

发表于 2012-4-4 11:17:42 | 显示全部楼层
回复 1# vv3509

这是全部的网页源码吗?
发表于 2012-4-4 12:57:40 | 显示全部楼层
本帖最后由 apoorman1986 于 2012-4-4 16:06 编辑
(?<=\s)\w{4}(?=<p)
发表于 2012-4-4 15:31:05 | 显示全部楼层
afan 发表于 2012-4-4 11:14


A大,这个\H是什么意思呢?
发表于 2012-4-4 15:45:52 | 显示全部楼层
回复 6# lpxx


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

评分

参与人数 1金钱 +10 收起 理由
lpxx + 10 谢谢,人老记性不好了。

查看全部评分

发表于 2012-4-4 15:46:57 | 显示全部楼层
回复 6# lpxx

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

评分

参与人数 1金钱 +10 收起 理由
lpxx + 10 谢谢,人老记性不好了。

查看全部评分

发表于 2012-4-4 16:08:03 | 显示全部楼层
回复 6# lpxx


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

评分

参与人数 1金钱 +10 收起 理由
lpxx + 10 谢谢,人老记性不好了。

查看全部评分

发表于 2012-4-5 13:05:39 | 显示全部楼层
回复 2# user3000
我的想法也是这样的,哎,看A大的这则,怎么我写的复杂的时候,他的简单,我写的简单的时候,他的复杂,看都看不懂,天书,哎!
发表于 2012-4-5 14:15:07 | 显示全部楼层
回复  user3000
我的想法也是这样的,哎,看A大的这则,怎么我写的复杂的时候,他的简单,我写的简单的时 ...
xms77 发表于 2012-4-5 13:05



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

评分

参与人数 2金钱 +40 贡献 +5 收起 理由
lpxx + 10
xms77 + 30 + 5 正则果然是有很多异曲同工的表达式

查看全部评分

发表于 2012-4-5 17:16:17 | 显示全部楼层
回复 12# lixiaolong
楼主说的含糊不清?--- '也会包含字母和数字'
如果他还要匹配字母, 你给出的后面几个正则就不能用了.

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

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

老实说, 勉强会用正则,  说得不对, 请多指教!
发表于 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
写法是很多的.

评分

参与人数 2金钱 +27 收起 理由
lpxx + 10
user3000 + 17 也是这样!

查看全部评分

发表于 2012-4-5 18:21:21 | 显示全部楼层
回复  lixiaolong
楼主说的含糊不清?--- '也会包含字母和数字'
如果他还要匹配字母, 你给出的后面几个正 ...
user3000 发表于 2012-4-5 17:16



    一般来说,正则表达式都是“满足既定的条件”即可,否则可能做无谓的分析判断。如楼主所提供的字符串就没必要做多余的分析。倘若楼主有更多的条件,他应该提出。对于正则方面的提问,提问者应提供尽量全的“源”条件,如若没有,则视为仅此而已。

评分

参与人数 2金钱 +25 收起 理由
lpxx + 10
user3000 + 15 对极!

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-29 14:55 , Processed in 0.116508 second(s), 34 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表