c# 根据正则表达式突出显示 rtb 文本颜色

标签 c# regex richtextbox

我对同时使用 rtb 和 regex 有疑问。

我有一个类似 vK-lKs-812349;jra_6993788428;Enx-2674@62 的文本

我的函数将按 deli'ter ';' 拆分数据并将每个部分与正则表达式模式匹配

  • 第一部分"^[a-zA-Z]{2}-[a-zA-Z]{3}-[0-9]{7}$"
  • 第二部分"^[a-zA-Z]{3}_[0-9]{10}$"
  • 第三部分"^[a-zA-Z]{3}-[0-9&~%@*^<>!#$]{7}$"

我想要的是我在 rtb 中有这些数据(所有行都有相似的数据,即相同的数据模式)。当我单击按钮时,函数应该获取光标所在的行,并且它应该与模式匹配,如果正则表达式不匹配,它应该更改文本特定部分的颜色。

示例:如果我在第 2 行并且第二部分数据是 'zza 6993788428' 那么因为缺少 _ 正则表达式将不匹配所以我希望 rtb 中的这部分应该获得红色。

您的帮助将不胜感激。谢谢...

最佳答案

试试这个

     if (!string.IsNullOrEmpty(richTextBox1.Text))
            {
                int lineStart = 0;
                foreach (string item in richTextBox1.Lines)
                {
                    List<string> lst = item.Split(new char[] { ';' }).ToList();
                    if (lst.Count == 3)
                    {
                        if (!Regex.IsMatch(lst[1], "^[a-zA-Z]{3}_[0-9]{10}$"))
                        {
                            int Start = richTextBox1.Find(item, lineStart, richTextBox1.TextLength, RichTextBoxFinds.WholeWord);
                            int End = Start + item.Length;

                            richTextBox1.Select(Start, End);
                            richTextBox1.SelectionBackColor = Color.Red;
                        }
                        else
                        {
                            int Start = richTextBox1.Find(item, lineStart, richTextBox1.TextLength, RichTextBoxFinds.WholeWord);
                            int End = Start + item.Length;

                            richTextBox1.Select(Start, End);
                            richTextBox1.SelectionBackColor = Color.Green;
                        }
                    }
                    lineStart += item.Length;
                }
            }

关于c# 根据正则表达式突出显示 rtb 文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37741206/

相关文章:

c# - 如何在不知道字符串中有哪些标签的情况下从字符串中删除所有 HTML 标签?

c# - 如何在 RichTextBox 中的单词周围绘制边框?

c# - 在 richtextbox 中查找所有换行符

c# - 在 C# 中创建的 Web 代理需要提示进行身份验证

c# - 如何在 C# 中使用 <T> 魔法使方法返回任意结构?

regex - 如何使用 JMeter 中的 REGEX 提取器从变量中获取部分值?

regex - 如何在/bin/sh 脚本中使用正则表达式获取字符串的一部分

ruby - gsub 仅在字符串的一部分

c# - 使用 RenderTransform 时如何防止文本像素化?

c# - C# 中的 double 与十进制舍入