Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# I';我正在尝试使用正则表达式从RichTextBox检索文本_C#_Regex_Search - Fatal编程技术网

C# I';我正在尝试使用正则表达式从RichTextBox检索文本

C# I';我正在尝试使用正则表达式从RichTextBox检索文本,c#,regex,search,C#,Regex,Search,正如标题所暗示的,我试图从richtextbox中检索某一行数字,然后将其放入一个单独的文本框中。我尝试了下面的代码,但它不想与我一起工作。这可能是错误的,可能有更简单的方法来做,但我对这件事很陌生,我会感谢所有我能在这件事上得到的帮助 我有一个名为tbPersNr的文本框 一个名为tbText的RichTextBox 一个称为btnGet的按钮 string regPattern = @"\\d{6}-\\d{4}"; int indexOfSearch = 0;

正如标题所暗示的,我试图从richtextbox中检索某一行数字,然后将其放入一个单独的文本框中。我尝试了下面的代码,但它不想与我一起工作。这可能是错误的,可能有更简单的方法来做,但我对这件事很陌生,我会感谢所有我能在这件事上得到的帮助

我有一个名为tbPersNr的文本框

一个名为tbText的RichTextBox

一个称为btnGet的按钮

    string regPattern = @"\\d{6}-\\d{4}";

    int indexOfSearch = 0;

    private void btnGet_Click(object sender, EventArgs e)
    {
        int startIndex = 0;

        if (tbText.Text.Length > 0)
        {
            startIndex = HittaPersNr(regPattern, startIndex, tbText.Text.Length); 
        }

        if (startIndex > 0)
        {
            this.tbPersNr.Text = regPattern.ToString();
        }
    }

    public int HittaPersNr(string txtToSearch, int searchStart, int searchEnd)
    {
        // Setting default value to -1.
        int retVal = -1;

        // Validating start of the search
        // om indexOfSearch = -1, slutar sökningen
        if (searchStart >= 0 && indexOfSearch >= 0)
        {
            // Validating end of search
            if (searchEnd > searchStart || searchEnd == -1)
            {
                // Searching for results in richtextbox
                indexOfSearch = tbText.Find(regPattern, searchStart, searchEnd, RichTextBoxFinds.None);

                // Validating if search resulted in any finds.
                if (indexOfSearch != -1)
                {
                    // putting index to value in the text.
                    retVal = indexOfSearch;
                }
            }
        }
        return retVal;
    }

更新

为所有有用的答案干杯,,,并为自己表达得相当笨拙而抱歉。但我原以为我走错了方向,我会尝试用一些答案修复我的应用程序。Welbog,那里的侦探工作做得很好,嘿嘿,很好你理解了我的意思。谢谢你们所有人,他们指出了如何正确地编写正则表达式,,,相当混乱

非常伟大

Simon

RichTextBox.Find()
不是一个正则表达式函数


改用
Regex.Match(tbText.Text,regPattern)

除非您真的想搜索包含
\
的内容,否则我认为您可能有太多反斜杠。不应该是这样吗

    string regPattern = @"\d{6}-\d{4}";

字符串前面的
@
阻止反斜杠被解释,因此它们成为字符串的一部分。

如果您试图使用一个正则表达式来检查6位数字,后跟一个
-
,然后是4位数字,那么您的正则表达式是错误的:

@"\\d{6}-\\d{4}"
您可以使用或转义
\
,但不能同时使用两者

以下哪一项都可以:

@"\d{6}-\d{4}"
"\\d{6}-\\d{4}"
此外,您正在尝试在
RichTextbox
Find
方法中使用正则表达式,该方法不接受正则表达式

看起来您打算匹配您的模式,然后将结果打印到名为
tbPersNr
的文本框中。至少我认为这是代码的目的:

if (tbText.Text.Length > 0)
{
  startIndex = HittaPersNr(regPattern, startIndex, tbText.Text.Length);
}

if (startIndex > 0)
{
  this.tbPersNr.Text = regPattern.ToString();
}
但是
regPattern
是设置为
\\d{6}-\\d{4}
的字符串。它没有被模式匹配的内容所取代,我相信这正是您所期望的(我真的说不出来,但我看不出有什么理由打印这样的字符串文字)。因此,除了其他答案提出的要点外,您还需要从富文本框中实际检索匹配的值,以便显示它


调用
Substring
就可以了,使用您已经找到的
startIndex
,长度为
11
(这是与正则表达式匹配的字符串长度)。

@Simon-欢迎使用StackOverflow。然而,你的问题有几个问题。首先,你没有问任何问题。第二,您没有指定所遇到的错误和问题。这使得人们很难给出有意义的答案。“它不起作用”不是一个非常有用的情况诊断。这段代码具体做了哪些您不希望它做的事情?