SuperDesign/Source/开发辅助工具/Tools/FrmRegex.cs
鑫Intel c7b33920bd ### 2023-01-21更新
------
#### SuperDesign    V2.0.2301.2101
- *.[新增]新增API编辑器,自动保存和快速插入修改参数。
- *.[改进]使用新款高亮编辑器。
2023-01-21 23:28:09 +08:00

115 lines
4.4 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
namespace .Tools
{
public partial class FrmRegex : DockContent
{
public FrmRegex()
{
InitializeComponent();
}
private void RySearchRegex_OnSearch(object sender, EventArgs e)
{
if (RySearchRegex.Text.Trim() == "")
{
MessageBox.Show("正则表达式不能为空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
RichRegexOutput.Text = "";
table1.TableModel.Rows.Clear();
tabPage10.Text = "列表展示(" + tableModel1.Rows.Count + ")";
TabTxtResult.Text = "普通结果(正在读取)";
bool IgnoreCase = ChkIgnoreCase.Checked;
bool Multiline = ChkMultiline.Checked;
string RegexText = RySearchRegex.Text;
string RegexInput = TxtRegexInput.Text;
table1.BeginUpdate();
try
{
RegexOptions option = new RegexOptions();
if (IgnoreCase)
{
option = RegexOptions.IgnoreCase;
}
if (Multiline) { option |= RegexOptions.Multiline; }
Regex reg = new Regex(RegexText, option);
//返回一个结果集
MatchCollection result = reg.Matches(RegexInput);
string[] groups = reg.GetGroupNames();
string txt = "";
//遍历每个结果
for(int n=0;n<result.Count;n++)
{
Match m = result[n];
//输出结果
txt += m.ToString() + "\r\n";
if (m.Groups.Count > 0)
{
for (int i = 0; i < groups.Length; i++)
{
XPTable.Models.Row itemList = new XPTable.Models.Row();
//需要修改此处
itemList.Cells.Add(new XPTable.Models.Cell(m.Groups[groups[i]].Value));//示例
itemList.Cells.Add(new XPTable.Models.Cell(m.Index.ToString()));
itemList.Cells.Add(new XPTable.Models.Cell(groups[i]));
tableModel1.Rows.Add(itemList);
}
}
else
{
XPTable.Models.Row itemList = new XPTable.Models.Row();
//需要修改此处
itemList.Cells.Add(new XPTable.Models.Cell(m.ToString()));//示例
itemList.Cells.Add(new XPTable.Models.Cell(m.Index.ToString()));
itemList.Cells.Add(new XPTable.Models.Cell(""));
tableModel1.Rows.Add(itemList);
}
}
table1.EndUpdate();
RichRegexOutput.Text = txt;
TabTxtResult.Text = "普通结果("+result.Count+")";
tabPage10.Text = "列表展示(" + tableModel1.Rows.Count + ")";
}
catch (Exception ex)
{
TabTxtResult.Text = "普通结果(" + 0 + ")";
tabPage10.Text = "列表展示(" + tableModel1.Rows.Count + ")";
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void LnkRegexHelp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
ryCommon.RyFiles.OpenUrl("http://www.runoob.com/regexp/regexp-metachar.html");
}
private void TxtRegexInput_DoubleClick(object sender, EventArgs e)
{
ryControls.Controls.RichTextBox2 txt = (ryControls.Controls.RichTextBox2)sender;
.Controls.FrmText frm = new Controls.FrmText
{
Icon = Icon
};
frm.richTextBox1.Text = txt.Text;
if (frm.ShowDialog() == DialogResult.OK)
{
txt.Text = frm.richTextBox1.Text;
}
}
private void FrmRegex_Load(object sender, EventArgs e)
{
}
}
}