我对同时使用 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;
}
}
我是一名优秀的程序员,十分优秀!