[已解决]求助正则取网页文字
本帖最后由 vv3509 于 2012-4-5 19:54 编辑2012年4月5日19时7分12秒 387A请问如何取到387A
这4个字符,刷新会改变,这四个字符也可能是字母数字混合。
谢谢!!! 有字母和数字:
StringRegExp($str, '\d{1,2}分\d{1,2}秒\h*(\w*)<', 3) (\H+)<p 回复 1# vv3509
这是全部的网页源码吗? 本帖最后由 apoorman1986 于 2012-4-4 16:06 编辑
(?<=\s)\w{4}(?=<p)
afan 发表于 2012-4-4 11:14 http://www.autoitx.com/images/common/back.gif
A大,这个\H是什么意思呢? 回复 6# lpxx
\H any character that is not a horizontal whitespace character. 回复 6# lpxx
\h 是一行内的空白字符, \H 相反, 为非空白字符 回复 6# lpxx
正如上面各位所说,就是“非水平空格”字符 回复 2# user3000
我的想法也是这样的,哎,看A大的这则,怎么我写的复杂的时候,他的简单,我写的简单的时候,他的复杂,看都看不懂,天书,哎! 回复user3000
我的想法也是这样的,哎,看A大的这则,怎么我写的复杂的时候,他的简单,我写的简单的时 ...
xms77 发表于 2012-4-5 13:05 http://www.autoitx.com/images/common/back.gif
个人认为正则表达式的所谓简单和复杂并非只看表达式的长短,而应该首先考虑执行效率(表达式的长短与执行效率无必然的联系),在此前提下可能简单点的表达式可能更好理解。 本帖最后由 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 回复 12# lixiaolong
楼主说的含糊不清?--- '也会包含字母和数字'
如果他还要匹配字母, 你给出的后面几个正则就不能用了.
我从没用正则处理过大数据. 所以对正则效率的理解不是太'深刻'.
个人喜欢追求准确并"唯一"的匹配(匹配结果尽可能少)
按A版的样式,(\H+)<p其实我心里还是有点疑惑的, 如果匹配的字符串里有多个 '<p' 存在呢?
是不是要这样 (\H+)?<p 加个最小匹配限制才行?
老实说, 勉强会用正则,说得不对, 请多指教! 本帖最后由 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写法是很多的. 回复lixiaolong
楼主说的含糊不清?--- '也会包含字母和数字'
如果他还要匹配字母, 你给出的后面几个正 ...
user3000 发表于 2012-4-5 17:16 http://www.autoitx.com/images/common/back.gif
一般来说,正则表达式都是“满足既定的条件”即可,否则可能做无谓的分析判断。如楼主所提供的字符串就没必要做多余的分析。倘若楼主有更多的条件,他应该提出。对于正则方面的提问,提问者应提供尽量全的“源”条件,如若没有,则视为仅此而已。
页:
[1]
2