找回密码
 加入
搜索
查看: 12296|回复: 46

[AU3基础] 求正则 [已解决]

 火... [复制链接]
发表于 2012-4-26 08:07:23 | 显示全部楼层 |阅读模式
本帖最后由 奥斯丁 于 2012-4-29 01:06 编辑

求正则,太难入门了。
把问题修改了一下............
问题如下:  一串字符,这中间有空格分隔的, 而且空格前的字符必须是整数才是我想提取的串 ( 该串的中间没有空格的就为放弃,仅仅在串的末尾的带空格的也放弃。)
          上述条件成立的话:    1:求取第一个空格前的整数的正则 ,  2:同时用正则求取空格后的第一个字符  (用来判断是否为h或p来决定分别调用不同的进程) . 如:
11 23pphh    =11   2      不是h 或p
22 p9944      =22   p
-33 sdfh77    = -33  s      不是h 或p
44dfghdfh     =                放弃
55                 =                放弃 (注: 即使55 的后面带空格也要放弃)
66pp66  ph   =                放弃   空格前的字符必须是整数

这下该清楚明白了, 有请大侠.........

    补充:  问题1 已经解决, 求正则问题2.
发表于 2012-4-26 09:13:19 | 显示全部楼层
难以理解"求第一个空格前的正负整数"、"该串也可能没有空格的取值就为空了"唉,是否我的汉语言文学水平太差了呢?至少搞个例子吧,让人容易理解一点吧。
发表于 2012-4-26 10:24:26 | 显示全部楼层
(?m)^[+-]*\d*\.*\d+\b(?=\h)
发表于 2012-4-26 12:41:18 | 显示全部楼层
回复 1# 奥斯丁
文字描述还不如上字符串和要取什么
发表于 2012-4-26 19:35:01 | 显示全部楼层
举一个字符串的例子吧
发表于 2012-4-26 20:10:49 | 显示全部楼层
楼上到处灌水,可能还得被扣分吧

评分

参与人数 1贡献 +2 收起 理由
afan + 2 处理了,删帖+扣分+禁言一周。

查看全部评分

发表于 2012-4-26 20:22:42 | 显示全部楼层
不太懂什么意思,只能猜.
Local $Str = 'aaaa+1234 bbbb-4321 cccc+6666  '
Local $Test = StringRegExp($Str, '([-+]?\d+)\s.+', 1)
If Not @error Then MsgBox(0, '', '原字符串: ' & $Str & @CRLF & '匹配结果: ' & $Test[0])
 楼主| 发表于 2012-4-27 21:35:40 | 显示全部楼层
本帖最后由 奥斯丁 于 2012-4-28 02:08 编辑

手机上发上来的问题,说的有点不清楚, 呵呵.....
问题如下:  一串字符,这中间有空格分隔的, 而且空格前的字符必须是整数才是我想提取的串 ,   1:求取第一个空格前的整数的正则 ,  2:求取空格后的第一个字符并判断是否为h或p .  ( 该串的中间没有空格的就为放弃,仅仅在串的末尾的带空格的也放弃。)
如:
11 23pphh    =11   2不是h 或p
22 p9944      =22   p
-33 sdfh77   = -33  s不是h 或p
44dfghdfh    = 放弃
55                =放弃 (注: 即使55 的后面带空格也要放弃)
66pp66hh66  pphh =放弃   空格前的字符必须是整数

这下该清楚明白了, 有请大侠.........
发表于 2012-4-27 21:59:01 | 显示全部楼层
本帖最后由 whitehead 于 2012-4-27 22:31 编辑

问题1
$Test = StringRegExp($Str, '(?m)^(-?\d+)\s+\w+', 1)
发表于 2012-4-27 22:05:35 | 显示全部楼层
本帖最后由 whitehead 于 2012-4-27 22:32 编辑

问题2
在问题1有解时
$Test = StringRegExp($Str, '(?m)^-?\d+\s+(h|p).*', 1)
 楼主| 发表于 2012-4-27 22:12:20 | 显示全部楼层
问题1
$Test = StringRegExp($Str, '^(-?\d+)\s+\w+', 1)
whitehead 发表于 2012-4-27 21:59



    3q !
问题2   同样求正则取第一个字符
发表于 2012-4-27 22:18:08 | 显示全部楼层
3q !
问题2   同样求正则取第一个字符
奥斯丁 发表于 2012-4-27 22:12


10楼匹配时就取空格后第一个字符h或p
 楼主| 发表于 2012-4-27 23:37:12 | 显示全部楼层
不是很明白 ls 的意思, 我试过用 以指定分隔符把字符串拆分成若干子串 的方法有可能发生遗漏(不是很肯定是哪里的问题,遗漏肯定是发生了), 所以想用正则的办法代替, 确定这部分没有问题. ..  还望详细的命令, 毕竟是正则, 头大.........
发表于 2012-4-28 00:18:42 | 显示全部楼层
回复 8# 奥斯丁
#include <array.au3>
Local $Str = '11 23pphh    =11' & @CRLF & _  ;   2不是h 或p 
'22 p9944      =22'   & @CRLF & _ ; p
'-33 sdfh77   = -33'  & @CRLF & _   ;  s不是h 或p 
'44dfghdfh    = 放弃' & @CRLF & _
'55                ='   & @CRLF & _    ;'放弃 (注: 即使55 的后面带空格也要放弃)
'66pp66hh66  pphh =放弃'  ; 空格前的字符必须是±整数 
$f = stringregExp($Str, '(?<=[\r\n\h^])([+\-]?\d+)\h+(?=[hp])', 3)
If Not @error  Then _arraydisplay($f)
有空, 也把1楼的发言好好编辑一下吧???
 楼主| 发表于 2012-4-28 02:25:38 | 显示全部楼层
本帖最后由 奥斯丁 于 2012-4-28 02:33 编辑

问题2是求第一个字符,  h和p是分别调用不同的进程的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-16 12:08 , Processed in 0.093774 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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