Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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# 请用正则表达式更正_C#_Regex - Fatal编程技术网

C# 请用正则表达式更正

C# 请用正则表达式更正,c#,regex,C#,Regex,我正在使用port.ReadExisting()读取串行端口,以读取c#中GSM调制解调器的来电。我将读取的数据存储在字符串变量s中。现在我想将传入的数据与正则表达式进行比较。但是while条件永远不会执行。请提供更正 端口上的传入数据为 RING +CLIP: "+919030665834",145,"",,"",0 我编写了以下代码: string s = port.ReadExisting(); Regex r = n

我正在使用port.ReadExisting()读取串行端口,以读取c#中GSM调制解调器的来电。我将读取的数据存储在字符串变量s中。现在我想将传入的数据与正则表达式进行比较。但是while条件永远不会执行。请提供更正

端口上的传入数据为

RING

+CLIP: "+919030665834",145,"",,"",0
我编写了以下代码:

                string s = port.ReadExisting();  
                Regex r = new Regex(@"\r\n(.+)\r\n\+CLIP: ""\+(\d+)"",(.+),""(.*)"",(.*),""(.*)"",(\d+)\r\n");  
                Match m = r.Match(s);  
                while (m.Success)  
                {  
                    if (s.Contains("\r\nRING\r\n"))  
                    {  
                        call_status.Text = "Incoming Call";  
                        call_status.Visible = true;  
                        status_phno.Text = m.Groups[1].Value;  
                    }  
                 }

我认为,+匹配的“环”和+剪辑之间应该有两条换行符。因此正则表达式将读取\r\n(+)\r\n\r\n+CLIP:


否则,这应该是一个容易调试的问题——只需开始用“.”替换越来越大的部分,从前面或后面开始。一旦它开始匹配,你就知道你刚刚输入的部分。是该部分导致了问题。

我认为,+匹配的“环”和+剪辑之间应该有两条换行符。因此正则表达式将读取\r\n(+)\r\n\r\n+CLIP:

否则,这应该是一个容易调试的问题——只需开始用“.”替换越来越大的部分,从前面或后面开始。一旦它开始匹配,你就知道你刚刚输入的部分。是该部分导致了问题。

使用此部分:

var match = Regex.Match(inputString, "RING[^\\+]*\\+CLIP:\\s*\"(?<phone>[^\"]*)\",(\\d+),\"([^\"]*)\",(\\w*),\"(\\w*)\",(\\w*)");

if(match.Success && inputString.Contains("RING"))
{
    var phoneNumber = match.Groups["phone"].Value;
}
var match=Regex.match(输入字符串,“环[^\+]*\\+剪辑:\\s*\”(?[^\“]*)\”,(\\d+),\“([^\“]*)\”,(\\w*),\“(\\w*)”,(\\w*)”;
if(match.Success&&inputString.Contains(“环”))
{
var phoneNumber=match.Groups[“phone”].Value;
}
我跳过了除第一个“+”之外的任何字符:
[^\+]*

使用此字符:

var match = Regex.Match(inputString, "RING[^\\+]*\\+CLIP:\\s*\"(?<phone>[^\"]*)\",(\\d+),\"([^\"]*)\",(\\w*),\"(\\w*)\",(\\w*)");

if(match.Success && inputString.Contains("RING"))
{
    var phoneNumber = match.Groups["phone"].Value;
}
var match=Regex.match(输入字符串,“环[^\+]*\\+剪辑:\\s*\”(?[^\“]*)\”,(\\d+),\“([^\“]*)\”,(\\w*),\“(\\w*)”,(\\w*)”;
if(match.Success&&inputString.Contains(“环”))
{
var phoneNumber=match.Groups[“phone”].Value;
}

我跳过了除“+”之外的任何字符:
[^\+]*

使用以下正则表达式:


“环[^\+]\+剪辑:\s\”(?[^\”)\”、(\d+)、\“([^\”)\”、(\w*)、\“(\w*)\”、(\w*)”

使用以下正则表达式:

“环[^\+]\+剪辑:\s\”(?[^\”)\”、(\d+)、\“([^\”)\”、(\w*)、\“(\w*)\”、(\w*)”