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

[效率算法] [已解决]正则表达式提取特定内容,请大神指导

  [复制链接]
发表于 2015-1-25 02:38:54 | 显示全部楼层 |阅读模式
本帖最后由 zhouhaijin 于 2015-1-25 11:46 编辑

Decompress, compress len=[55], orig len=[96]                                    CFtdcUserApiImplBase::HandlePackage                                                     FTDC PACKAGE HEADER                                                             Version[0X08],Chain[0X4C],SequenceSeries[0],TransactionId[0X0000F103],SequenceNumber[0]                                                                         FieldCount[2],FTDCContentLength[76],RequestId[0]                                FTDC PACKAGE CONTENT START                                                      FIELD [CFTDMarketDataUpdateTimeField] START                                                     [InstrumentID][0][IF1502]                                                       [UpdateTime][0][01:42:35]                                                       [UpdateMillisec][2][0]                                          FIELD [CFTDMarketDataUpdateTimeField] END                                       FIELD [CFTDMarketDataBestPriceField] START                                                      [BidPrice1][4][3609.600000]                                                     [BidVolume1][2][50]                                                             [AskPrice1][4][3609.800000]                                                     [AskVolume1][2][50]                                             FIELD [CFTDMarketDataBestPriceField] END                                        FTDC PACKAGE CONTENT END



取红色部分和前面[的英文],前面的英文是固定的,最好是根据前面的英文取后面的值
发表于 2015-1-25 07:24:24 | 显示全部楼层
已收藏,等大大来上课 ..
发表于 2015-1-25 07:44:02 | 显示全部楼层
\[([a-zA-Z0-9\s]+)\]\[\d\]\[(.*?)\]

评分

参与人数 1金钱 +10 收起 理由
zhouhaijin + 10 厉害、佩服

查看全部评分

发表于 2015-1-25 10:17:34 | 显示全部楼层
Local $Str = ''
$Str &= 'Decompress, compress len=[55], orig len=[96]                                    CFtdcUserApiImplBase::HandlePackage                                                     FTDC PACKAGE HEADER                                                             Version[0X08],Chain[0X4C],SequenceSeries[0],TransactionId[0X0000F103],SequenceNumber[0]                                                                         FieldCount[2],FTDCContentLength[76],RequestId[0]                                FTDC PACKAGE CONTENT START                                                      FIELD [CFTDMarketDataUpdateTimeField] START                                                     [InstrumentID][0][IF1502]                                                       [UpdateTime][0][01:42:35]                                                       [UpdateMillisec][2][0]                                          FIELD [CFTDMarketDataUpdateTimeField] END                                       FIELD [CFTDMarketDataBestPriceFi'
$Str &= 'eld] START                                                      [BidPrice1][4][3609.600000]                                                     [BidVolume1][2][50]                                                             [AskPrice1][4][3609.800000]                                                     [AskVolume1][2][50]                                             FIELD [CFTDMarketDataBestPriceField] END                                        FTDC PACKAGE CONTENT END' & @CRLF & @CRLF & @CRLF

MsgBox(0, '', _GetVal($str, 'InstrumentID') & @LF & _
                _GetVal($str, 'UpdateTime') & @LF & _
                _GetVal($str, 'UpdateMillisec') & @LF & _
                _GetVal($str, 'BidPrice1') & @LF & _
                _GetVal($str, 'BidVolume1') & @LF & _
                _GetVal($str, 'AskPrice1') & @LF & _
                _GetVal($str, 'AskVolume1'))

Func _GetVal($str, $sName)
        Local $aSR = StringRegExp($str, '\[' & $sName & '\]\[\d+\]\[(.+?)\]', 1)
        If Not @Error Then Return $aSR[0]
EndFunc   ;==>_GetVal

评分

参与人数 1金钱 +20 收起 理由
zhouhaijin + 20 谢谢超版

查看全部评分

发表于 2015-1-25 10:34:54 | 显示全部楼层


是想要这样的效果么???

#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{9,15}(?=\]\[)|(?:\[\d\]\[)(\w+.*?)(?=]\s)",3)
If Not @error Then _arraydisplay($res,'test')
FileClose($file)

乱写一通,大神勿贱笑啊。。

本帖子中包含更多资源

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

×

评分

参与人数 1金钱 +20 收起 理由
zhouhaijin + 20 厉害、佩服

查看全部评分

 楼主| 发表于 2015-1-25 11:44:46 | 显示全部楼层
回复 4# afan


    谢谢超版
 楼主| 发表于 2015-1-25 11:45:09 | 显示全部楼层
回复 3# athland5013


    谢谢帮忙
 楼主| 发表于 2015-1-25 11:48:29 | 显示全部楼层
回复 5# 半芯竹


    谢谢
 楼主| 发表于 2015-1-25 11:57:44 | 显示全部楼层
回复 4# afan


    就是想要这个效果
发表于 2015-1-26 08:12:58 | 显示全部楼层
进帖学习,天天向上~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-19 16:50 , Processed in 0.080701 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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