正则表达式以模式

时间:2017-07-04 18:35:11

标签: regex numbers

尝试从一串模式中提取数字: <Some Alphanumeric> <numbers> X <numbers> <Some Alphanumeric>

e.g。 I 00 Crazy 060 X 0140 08 Dance 47

应提取数字0600140以及文字I 00 Crazy08 Dance 47

我使用以下正则表达式: (.*)(\d{1,3})\s*(x|X)\s*(\d{1,4})(.*)

但是,这不是在X之前的第一个数字上工作,它只捕获0而不是060,但正确捕获第二个数字0140

\d{1,3}应该贪婪地捕捉1到3之间的数字 - 所以我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

这应该有效,

public string ReceiveTokenGmail(string code, string GoogleWebAppClientID, string GoogleWebAppClientSecret, string RedirectUrl)
{
    string postString = "code=" + code + "&client_id=" + GoogleWebAppClientID + @"&client_secret=" + GoogleWebAppClientSecret  + "&redirect_uri=" + RedirectUrl;

    string url = "https://accounts.google.com/o/oauth2/token";

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url.ToString());
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";

    UTF8Encoding utfenc = new UTF8Encoding();
    byte[] bytes = utfenc.GetBytes(postString);
    Stream os = null;
    try
    {
        request.ContentLength = bytes.Length;
        os = request.GetRequestStream();
        os.Write(bytes, 0, bytes.Length);
    }
    catch
    { }
    string result = "";

    HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse();
    Stream responseStream = webResponse.GetResponseStream();
    StreamReader responseStreamReader = new StreamReader(responseStream);
    result = responseStreamReader.ReadToEnd();

    return result;
}

此处,(.*)\b(\d{1,3})\s*(x|X)\s*(\d{1,4})(.*) 在字边界\b

处断言位置