找回密码
 加入
搜索
查看: 5562|回复: 9

[效率算法] 【已解决】正则表达式中关于分割 截取多行,问题

  [复制链接]
发表于 2015-1-14 22:41:12 | 显示全部楼层 |阅读模式
本帖最后由 狼兄 于 2015-1-20 19:35 编辑

源字符:

[U6L8]
zsmj=134
Name= 马
Tip=可以电动不要这样进度r-好人一生平安
[YUOP]
zsmj=54336
Name= 小狗
Tip=请发这埯回复
[iopp]
zsmj=989
Name= 龙
Tip=这是一个什么吊的r-东东



要用正则表达式取其[]中的字四个字符,和Name后面的汉字,要求Tip的后面有r-的字符才符合条件,主要不知怎样处理多行,还有就是怎样判断r-在不在其中。

比如我想取其中 U6L8马
发表于 2015-1-15 08:56:51 | 显示全部楼层
顶一下。。。。。。。。。。。。。。。
 楼主| 发表于 2015-1-15 12:05:52 | 显示全部楼层
回复 2# wangms


    只顶一下怎么够,解答一下吧。
发表于 2015-1-15 14:29:45 | 显示全部楼层
本帖最后由 半芯竹 于 2015-1-15 15:00 编辑


#include <Array.au3>
Local $file = FileOpen(@ScriptDir&"\1.txt", 0)
If $file = -1 Then Exit
Local $chars = FileRead($file)
If @error = -1 Then Exit
Local $res = StringRegExp($chars,"\w+(?=\].*\s.*\s\w+.*\s.*r-)|[^\x00-\xff].(?=\s.*[^\x00-\xff]+r-)",3)
If Not @error Then _arraydisplay($res,'test')
FileClose($file)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2015-1-15 19:38:29 | 显示全部楼层
回复 4# 半芯竹

万分感谢,正在看正则表达式的书写,稍后再答复,再次谢了
 楼主| 发表于 2015-1-15 20:45:56 | 显示全部楼层
回复 4# 半芯竹

谢谢,看了你的例子,正则表达式,我依葫画瓢已解我的实际问题,从中学到以下:
1、\s其意思匹配任意空白字符,原来像换行这一类就是空白字类。
2、?=断言原来可以这样用,我以为只是(?=N)这样断字符位置,原来还可在其中形各种条件来用。
3、StringRegExp标志位参数1与3区别,返回匹配的数组和返回全局匹配数组,原来3是可以用来接收
     “|”这个或的输出数组,形成排开的数组,如果有多个“|”或条件,则会形同条件的数组列,如例中的
     U6L8 134 马 iopp 989 龙。
最后谢谢半芯竹朋友,前天开始接触正则,多谢半芯竹朋友的提点,还请朋友帮看一下我3点理解是不是正确。
发表于 2015-1-15 20:52:28 | 显示全部楼层
第一点正解,第二点也正解。。第三点,不需要"|"它也会返回一个数组。。正则本身返回的,就是一个数组。。我上面写的正则,不是太精简,我也是刚学。像AFAN等高手,应该很能写出更短,更简洁的。。。期待高手给我等学习机会。。
 楼主| 发表于 2015-1-15 21:16:57 | 显示全部楼层
回复 7# 半芯竹

那么标志 1与3是什么区别?
帮助文档中关于stringregexp中解释的全局数组是什么意思
发表于 2015-1-17 22:20:24 | 显示全部楼层
\[(.*)\]\R.*\RName= (.*)\R.*r-
 楼主| 发表于 2015-1-20 19:34:50 | 显示全部楼层
回复 9# shqf


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

本版积分规则

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

GMT+8, 2024-12-28 03:05 , Processed in 0.097679 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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