Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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#_.net_Regex - Fatal编程技术网

C# 使用正则表达式从字符串中检索数字

C# 使用正则表达式从字符串中检索数字,c#,.net,regex,C#,.net,Regex,虽然我遇到了困难,但我想做的事情相当简单。我有一个字符串,它是一个url,它的格式是我想要检索的someid部分。我想我可以使用正则表达式,但我对它们不是很在行,这就是我尝试的: Match match = Regex.Match(theString, @"*.?id=(/d.)"); 我收到一个regex异常,说解析regex时出错。我阅读这篇文章的方式是“任意数量的字符”,然后是文本“?id=“”,后面跟着任意数量的数字“。我把数字排成一组,这样我就可以把它们拔出来。我不确定这是怎么回事。

虽然我遇到了困难,但我想做的事情相当简单。我有一个字符串,它是一个url,它的格式是我想要检索的someid部分。我想我可以使用正则表达式,但我对它们不是很在行,这就是我尝试的:

Match match = Regex.Match(theString, @"*.?id=(/d.)");
我收到一个regex异常,说解析regex时出错。我阅读这篇文章的方式是
“任意数量的字符”
,然后是文本
“?id=“
”,后面跟着任意数量的数字“。我把数字排成一组,这样我就可以把它们拔出来。我不确定这是怎么回事。如果有人能告诉我我做错了什么,我将不胜感激,谢谢

试试看

var match = RegEx.Match(theString, @".*\?id=(\d+)");

你的正则表达式中有几个错误。试试这个:

Match match = Regex.Match(theString, @".*\?id=(\d+)");
具体而言,我:

  • *.
    更改为
    *
    (点匹配所有非换行符,
    *
    表示前面的字符为零或更多)
  • 之前添加了转义序列,因为问号是正则表达式中的特殊字符。它表示零或前面的一个
  • /d.
    更改为
    \d*
    (您的斜杠走错了方向,您使用了上面解释的点,而不是上面解释的
    *
      • 该错误可能是由于前面的
        *
        引起的。正则表达式中的
        *
        字符与前一个字符的零次或多次匹配;所以它不能是第一个字符
      • 可能是打字错误,但数字的快捷方式是
        \d
        ,而不是
        /d
      • 匹配任何字符,您需要匹配一个或多个数字-因此使用
        +
      • 是一个特殊字符,因此需要对其进行转义
      因此,它变成:

      Match match = Regex.Match(theString, @".*\?id=(\d+)");
      

      尽管如此,regex并不是最好的工具;使用适当的查询字符串解析器,否则事情最终将变得难以管理。

      不需要正则表达式。只需使用内置的实用程序

      string query = new Uri("http://www.somedomain.com?id=someid").Query;
      var dict = HttpUtility.ParseQueryString(query);
      
      var value = dict["id"]