狼兄 发表于 2015-1-14 22:41:12

【已解决】正则表达式中关于分割 截取多行,问题

本帖最后由 狼兄 于 2015-1-20 19:35 编辑

源字符:


zsmj=134
Name= 马
Tip=可以电动不要这样进度r-好人一生平安

zsmj=54336
Name= 小狗
Tip=请发这埯回复

zsmj=989
Name= 龙
Tip=这是一个什么吊的r-东东


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

比如我想取其中 U6L8马

wangms 发表于 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中解释的全局数组是什么意思

shqf 发表于 2015-1-17 22:20:24

\[(.*)\]\R.*\RName= (.*)\R.*r-

狼兄 发表于 2015-1-20 19:34:50

回复 9# shqf


    谢谢
页: [1]
查看完整版本: 【已解决】正则表达式中关于分割 截取多行,问题