bhwhui 发表于 2014-4-20 12:29:55

[已解决]请教文本文件正则匹配入门问题:

本帖最后由 bhwhui 于 2014-4-22 13:17 编辑

自己学艺不精,看过了正则表达式的内容,1个简单问题,自己就是调不通
如图文本文件截图:



开始我想选出所有含有"rb"字眼的行,用
$str=fileread(".....")
$hydm="rb"
stringregexp($str,".*" & $hydm & ".*",3)
搞定了。

当我想同时取出含有日期的行时,将上述语句改为
$str=fileread(".....")
$str2="2014/04/18,rb1410,X,X,X"
$str3=stringsplit($str2,",")
$sre=stringregexp($str,".*" & $str3 & "." & str3 & ".*",3)
就不行了,我哪里搞错了?大眼看小眼看了1个下午就是搞不定。
请教各位了,谢谢

afan 发表于 2014-4-20 15:35:13

#include <Array.au3>
Local $Str = _
                '2014/04/18,ru1405,15,X,X' & @CRLF & _
                '2014/04/18,ru1405,14,X,X' & @CRLF & _
                '2014/04/18,ru1405,1,X,X' & @CRLF & _
                '2014/04/18,rb1410,9,X,X' & @CRLF & _
                '2014/04/18,rb1410,4,X,X' & @CRLF & _
                '2014/04/18,rb1410,20,X,X'
Local $s = 'rb'
Local $aSR = StringRegExp($str, '(?mi)^.+?' & $s & '\V+', 3)
_ArrayDisplay($aSR, UBound($aSR))

bhwhui 发表于 2014-4-20 16:10:22

本帖最后由 bhwhui 于 2014-4-20 16:14 编辑

谢谢先,A版没看清楚我的问题,是第二个问题。

仔细看了看,自己的第2段程序没问题,问题是输出时不带回车换行符,挤到一块了。怎么把它分开?

fuldho 发表于 2014-4-20 19:24:40

回复 1# bhwhui


    看了你的代码我大眼看小眼了

Ycxw2008 发表于 2014-4-21 00:34:45

本帖最后由 Ycxw2008 于 2014-4-21 00:40 编辑

回复 4# fuldho


   你先试试小写的 \v 能匹配到换行符吗{:face (238):}

   我猜是不能,因为你那获取的文本只有一行,试试下面的吧2014[\d/]+,rb.+?

jiangtaox1 发表于 2014-4-28 15:17:17

正则果然有点复杂,这个代码完全看不懂啊- -
页: [1]
查看完整版本: [已解决]请教文本文件正则匹配入门问题: