尝试从一串模式中提取数字:
<Some Alphanumeric> <numbers> X <numbers> <Some Alphanumeric>
e.g。
I 00 Crazy 060 X 0140 08 Dance 47
应提取数字060
和0140
以及文字I 00 Crazy
和08 Dance 47
我使用以下正则表达式:
(.*)(\d{1,3})\s*(x|X)\s*(\d{1,4})(.*)
但是,这不是在X之前的第一个数字上工作,它只捕获0
而不是060
,但正确捕获第二个数字0140
。
\d{1,3}
应该贪婪地捕捉1到3之间的数字 - 所以我在这里缺少什么?
答案 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