⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fs_reg.cs

📁 本人编写的一款测试正则表达式的工具 功能简单,但非常实用
💻 CS
📖 第 1 页 / 共 2 页
字号:
			// 
			// FS_menu_recall
			// 
			this.FS_menu_recall.Index = 0;
			this.FS_menu_recall.Text = "撤销(&U)  Ctrl+Z";
			this.FS_menu_recall.Click += new System.EventHandler(this.FS_menu_recall_Click);
			// 
			// FS_menu_cut
			// 
			this.FS_menu_cut.Index = 3;
			this.FS_menu_cut.Text = "剪切(&T)  Ctrl+X";
			this.FS_menu_cut.Click += new System.EventHandler(this.FS_menu_cut_Click);
			// 
			// menuItem3
			// 
			this.menuItem3.Index = 2;
			this.menuItem3.Text = "-";
			// 
			// menuItem4
			// 
			this.menuItem4.Index = 6;
			this.menuItem4.Text = "-";
			// 
			// FS_menu_selectall
			// 
			this.FS_menu_selectall.Index = 7;
			this.FS_menu_selectall.Text = "全选(&A)  Ctrl+A";
			this.FS_menu_selectall.Click += new System.EventHandler(this.FS_menu_selectall_Click);
			// 
			// FS_menu_redo
			// 
			this.FS_menu_redo.Index = 1;
			this.FS_menu_redo.Text = "重复(&R)  Ctrl+Y";
			this.FS_menu_redo.Click += new System.EventHandler(this.FS_menu_redo_Click);
			// 
			// FS_Reg
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
			this.ClientSize = new System.Drawing.Size(692, 393);
			this.Controls.Add(this.FS_BottomPanel);
			this.Controls.Add(this.FS_TopPanel);
			this.Name = "FS_Reg";
			this.Text = "正则测试工具1.0   (By 沙沙)";
			this.Resize += new System.EventHandler(this.FS_Reg_Resize);
			this.Load += new System.EventHandler(this.FS_Reg_Load);
			this.FS_TopPanel.ResumeLayout(false);
			this.panel1.ResumeLayout(false);
			this.FS_BottomPanel.ResumeLayout(false);
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main() 
		{
			//Application.EnableVisualStyles();//xp样式
			Application.Run(new FS_Reg());
		}

		private void FS_Execute_Click(object sender, System.EventArgs e)
		{
			try
			{
				MatchCollection found =null;
				Regex r;
				string _regx = FS_regx.Text;
				RegexOptions TheOptions;
				
				//RegexOptions TheOptions;
				//TheOptions=RegexProject.Options;
				if (FS_isIgnore.Checked)
					TheOptions = RegexOptions.Singleline | RegexOptions.IgnoreCase;
				else
					TheOptions = RegexOptions.Singleline;
				r = new Regex(@_regx,TheOptions);
				string _inputstr = FS_input.Text;
				found = r.Matches(_inputstr);
				FillTreeWithMatches(found,r);
				FS_total.Text = "总共( " + found.Count.ToString() + " )条匹配项";
			}
			catch(Exception ee)
			{
				MessageBox.Show("错误:"+ee.Message.ToString());
				return;
			}
		}

		private void ClearTreeNodes()
		{
			FS_tree.Nodes.Clear();
		}

		private void FillTreeWithMatches(MatchCollection found,Regex CreatingRegexObject)
		{
			ClearTreeNodes();
			foreach (Match m  in found)
			{
				if(m.Value.Length>0)
				{
				
					int ThisNode= AddTreeNode("["+m.Value + "]",m,1);
					if(m.Groups.Count>1)
					{
						for (int i=1;i<m.Groups.Count;i++)
						{
							string SubNodeText = CreatingRegexObject.GroupNameFromNumber(i)+": ["+m.Groups[i].Value+"]";
							AddSubNode(ThisNode,SubNodeText,m.Groups[i],i);
							
						}
					}
				}
			}
		}

		private void AddSubNode(int parentNodeIndex,string caption,Group captureGroup,int groupIndex)
		{
			
			FS_tree.Nodes[parentNodeIndex].Nodes.Add(new TreeNode(caption,0,0));
			FS_tree.Nodes[parentNodeIndex].Nodes[groupIndex-1].Tag=captureGroup;
			FS_tree.Nodes[parentNodeIndex].Expand();
		}


		private int AddTreeNode(string nodeText,Match currentMatchForNode,int iconIndex)
		{
			TreeNode t = new TreeNode(nodeText,iconIndex,iconIndex);
			FS_tree.Nodes.Add(t);
			int ThisNode=FS_tree.Nodes.Count-1;
			FS_tree.Nodes[ThisNode].Tag=currentMatchForNode;
			
			return ThisNode;

		}

		private void FS_tree_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
		{
			ShowCurrentTreeResultInInputText();
		}

		private void ShowCurrentTreeResultInInputText()
		{
			try
			{
				if(FS_tree.SelectedNode.Parent==null) // Must be the top level node
				{
					Match m=(Match)FS_tree.SelectedNode.Tag;
					if(m!=null)
					{
						
						FS_input.Select( m.Index,m.Length);
						FS_input.ScrollToCaret();
					}
				}
				else if(FS_tree.SelectedNode.Parent.Parent==null) // Must be a group
				{
					Group g=(Group)FS_tree.SelectedNode.Tag;
					if(g!=null)
					{
						FS_input.Select(g.Index,g.Length);
						FS_input.ScrollToCaret();
					}
				}
				else // Must be a capture
				{
					Capture c=(Capture)FS_tree.SelectedNode.Tag;
					if(c!=null)
					{
						FS_input.Select(c.Index,c.Length);
						FS_input.ScrollToCaret();
					}
				}

			}
			catch(Exception err)
			{
			    MessageBox.Show(err.Message);
			}
		}

		private void FS_Reg_Resize(object sender, System.EventArgs e)
		{
			FS_Init();
		}

		private void FS_Reg_Load(object sender, System.EventArgs e)
		{
			FS_Init();
		}

		private void FS_Init()
		{
			FS_regx.Anchor = ( ( ( AnchorStyles.Top | AnchorStyles.Bottom ) | AnchorStyles.Left ) | AnchorStyles.Right ); //定位"转到"按钮组件与窗体的上、右边框保持一致
			FS_Execute.Anchor = (  AnchorStyles.Top | AnchorStyles.Right ); //定位"转到"按钮组件与窗体的上、右边框保持一致
		}

		private void FS_menu_copy_Click(object sender, System.EventArgs e)
		{
			if (FS_input.SelectedText!="")
			{
				Clipboard.SetDataObject(FS_input.SelectedText, true);
			}
		}

		private void FS_menu_paste_Click(object sender, System.EventArgs e)
		{
			IDataObject iData = Clipboard.GetDataObject();

			if (iData.GetDataPresent(DataFormats.Text))
			{
				FS_input.Paste();
			}
		}

		private void FS_menu_recall_Click(object sender, System.EventArgs e)
		{
			FS_input.Undo();
		}

		private void FS_menu_cut_Click(object sender, System.EventArgs e)
		{
			if (FS_input.SelectedText!="")
			{
				FS_input.Cut();
			}
		}

		private void FS_menu_selectall_Click(object sender, System.EventArgs e)
		{
			FS_input.SelectAll();
		}

		private void FS_Menu_Popup(object sender, System.EventArgs e)
		{
			if (FS_input.SelectedText=="")
			{
				FS_menu_cut.Enabled = false;
				FS_menu_copy.Enabled = false;
			}
			else
			{
				FS_menu_cut.Enabled = true;
				FS_menu_copy.Enabled = true;
			}
		}

		private void FS_menu_redo_Click(object sender, System.EventArgs e)
		{
			FS_input.Redo();
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -