MQL5 中的正则表达式用于处理正则表达式 - MetaTrader 5 库





微软公司。源代码取自.Net框架4.6.1。
注意:该库适用于 MetaTrader 5 build 1285 及更高版本。
将存档解压到终端数据文件夹。
库代码位于:
示例测试脚本可以在
以下是 .Net Framework 4.6.1 中正则表达式的翻译。
要使用该库,请将“\MQL5\Include\RegularExpressions\”目录中的 Regex.mqh 文件包含在代码中。
该库提供了几个说明性示例,同时用作测试用例。所有样本均取自官方网站微软公司,它们生动地展示了与 C# 中正则表达式的主要区别以及它们在 MQL5 中的使用特点。
以下是有关正则表达式 MQL5 移植库包的更多详细信息:
文件中的正则表达式参数正则表达式选项.mqh:
使用 MQL5 的正则表达式:
//--- C# 代码正则表达式 rx =新的正则表达式(@"\b(?<字>\w+)\s+(\k<字>)\b", RegexOptions.IgnoreCase); 细绳文字 =“那只敏捷的棕色狐狸跳过了那只懒狗。”; MatchCollection matches = rx.Matches(text);foreach(比赛比赛在匹配) { //--- 处理 }//--- MQL5 代码正则表达式 *rx =新的正则表达式(“\\b(?<字>\\w+)\\s+(\\k<字>)\\b”, RegexOptions::IgnoreCase); 细绳文字 =“那只敏捷的棕色狐狸跳过了那只懒狗。”; MatchCollection *matches = rx.Matches(text); IEnumerator*en = matches.GetEnumerator();尽管(en.MoveNext()) { 匹配 *match = en.Current(); //--- 处理}删除接收;删除比赛;删除恩; 正则表达式::清除缓存();
使用 MQL5 正则表达式的示例:
作为正则表达式的一个例子,考虑它们的应用程序来解析以 html 文件形式从终端下载的交易历史记录。
为此,请创建一个具有“字符串”类型的单个输入参数的 EA,该参数将是沙箱文件:

该文档包含两个主要表:“订单”和“交易”。
创建正则表达式来解析文件:
正则表达式 *rgx=新的正则表达式(“(>)([^<>]*)(<)”);
考虑这个正则表达式:
接下来,逐行读取文件并获取与此正则表达式对应的所有匹配项:
细绳字符串=文件读取字符串(m_handel); MatchCollection *matches=rgx.Matches(str);
html 文件的字符串,即“Orders”和“Deals”表的条目(元组),将具有最多的此类匹配,即分别为 23 和 27 个匹配。因此,剩下要做的唯一一件事就是从这些字符串中提取所有必要的信息。
对于“订单”表:
如果(匹配.Count()==23) { 细绳 在[11]; 为了(整数我=0,j=1;我<11; i++,j+=2) { 在[i]=StringSubstr(匹配[j].Value(),1,StringLen(匹配[j].Value())-2); } m_list1.添加(新的订单记录(在)); }
已确认匹配数为23,因此处理的条目来自“Orders”表。创建一个字符串数组作为我们条目的初始表示。对所有奇数匹配创建迭代,使用以下方法获取这些匹配的值匹配[j][.Value()方法,修剪每个匹配的第一个和最后一个字符,对应于字符“>”和“<”。每个格式化的匹配都会写入先前声明的在大批。之后创建一个实例订单记录(in)类,它代表“Orders”表的单个条目,并将其添加到m_列表1列表。该列表将解释“订单”表。
“Deals”表将以类似的方式处理:
如果(匹配.Count()==27) { 细绳 在[13]; 为了(整数我=0,j=1;我<13; i++,j+=2) { 在[i]=StringSubstr(匹配[j].Value(),1,StringLen(匹配[j].Value())-2); } m_list2.添加(新的交易记录(在)); }
这里m_list2是一个指向的指针列表交易记录班级。它代表“交易”表。
这两个名单都是贸易历史班级。该类是整个原始 html 文件的表示。此外,它还允许使用以下方法将简单的过滤器应用于“订单”和“交易”表:FindAllOrders(const int columnIndex,const T 值)和FindAllDeals(const int columnIndex,const T 值)。
在 EA 中创建一个简单的图形界面来演示这些功能:

使用此表单时,选择所需的表,选择列及其值来过滤表。按寻找按钮,下面将显示过滤后的表格,以及一些统计信息。这节省按钮将当前显示的表格存储到 csv 文件。保存的文件也将位于沙箱中,并具有名称结果.csv。
要了解更多有关MQL5 的正则表达式及其功能,使用提供的测试.mqh专家。它实现了许多正则表达式使用示例,涵盖了该库的所有主要功能。

附件下载
📎 TableListView.mqh (60.38 KB)
📎 Tests.mq5 (139.55 KB)
📎 TradeHistoryParsing.mq5 (55.11 KB)
📎 Array.mqh (22.32 KB)
📎 IComparable.mqh (4.98 KB)
📎 dynamicmatrix.mqh (22 KB)
📎 wrappers.mqh (16.99 KB)
📎 Collection.mqh (12.54 KB)
📎 Dictionary.mqh (42.58 KB)
📎 EqualityComparer.mqh (8.65 KB)
📎 ICollection.mqh (6.15 KB)
📎 IComparer.mqh (6.62 KB)
📎 IDictionary.mqh (6.88 KB)
📎 IEnumerable.mqh (5.31 KB)
📎 IEnumerator.mqh (10.39 KB)
📎 IEqualityComparer.mqh (4.62 KB)
📎 IList.mqh (5.7 KB)
📎 KeyValuePair.mqh (6.34 KB)
📎 LinkedList.mqh (28.3 KB)
📎 List.mqh (38.62 KB)
📎 TimeSpan.mqh (31.7 KB)
📎 TimeSpanFormat.mqh (30.31 KB)
📎 CharUnicodeCategory.txt (23.5 KB)
📎 Regex.mqh (58.05 KB)
📎 RegexBoyerMoore.mqh (18.01 KB)
📎 RegexCapture.mqh (7.86 KB)
📎 RegexCaptureCollection.mqh (10.25 KB)
📎 RegexCharClass.mqh (97.97 KB)
📎 RegexCode.mqh (22.25 KB)
📎 RegexFCD.mqh (31.22 KB)
📎 RegexGroup.mqh (8.72 KB)
📎 RegexGroupCollections.mqh (11.25 KB)
📎 RegexInterpreter.mqh (49.66 KB)
📎 RegexMatch.mqh (22.94 KB)
📎 RegexMatchCollection.mqh (11.04 KB)
📎 RegexNode.mqh (32.45 KB)
📎 RegexOptions.mqh (14.82 KB)
📎 RegexParser.mqh (93.26 KB)
📎 RegexReplacement.mqh (20.83 KB)
📎 RegexRunner.mqh (31.31 KB)
📎 RegexTree.mqh (8.47 KB)
📎 RegexWriter.mqh (24.52 KB)
Source: MQL5 #15242
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
