如何获得带前缀的数字?

时间:2013-11-23 00:19:09

标签: c# regex

我有一行看起来像

的文字
"{\"Title\":\"Die Hard\",\"Year\":\"1988\",\"Rated\":\"R\",\"Released\":\"22 Jul 1988\",\"Runtime\":\"2 h 11 min\",\"Genre\":\"Action, Thriller\",\"Director\":\"John McTiernan\",\"Writer\":\"Roderick Thorp, Jeb Stuart\",\"Actors\":\"Bruce Willis, Alan Rickman, Bonnie Bedelia, Reginald VelJohnson\",\"Plot\":\"John McClane, officer of the NYPD, tries to save wife Holly Gennaro and several others, taken hostage by German terrorist Hans Gruber during a Christmas party at the Nakatomi Plaza in Los Angeles.\",\"Poster\":\"http://ia.media-imdb.com/images/M/MV5BMTY4ODM0OTc2M15BMl5BanBnXkFtZTcwNzE0MTk3OA@@._V1_SX300.jpg\",\"imdbRating\":\"8.3\",\"imdbVotes\":\"401,995\",\"imdbID\":\"tt0095016\",\"Type\":\"movie\",\"Response\":\"True\"}"

我想抓住imdbID部分

  

\ “imdbID \”:\ “tt0095016 \”

我的代码看起来像

var regex = new Regex("\"imdbID\":\"tt^[0-9]$\"");
var matches = regex.Matches(response);

但我没有得到任何比赛 - 为什么?什么是正确的模式?

2 个答案:

答案 0 :(得分:3)

你拥有的是JSON,最好用JSON解析器而不是正则表达式来解析这些数据。

话虽如此,我对C#并不熟悉,所以这里是你如何修复你的正则表达式解决方案:

var regex = new Regex("\"imdbID\":\"tt[0-9]+\"");
var matches = regex.Matches(response);

当前正则表达式中的^$肯定需要删除,这些是字符串锚点的开头和结尾,因此将它们放在常规中间是没有意义的表达式(除非您使用多行选项匹配多行)。另一项更改是将[0-9]更改为[0-9]++表示“重复上一个元素一次或多次”,因此[0-9]+将匹配任意数量的数字。< / p>

答案 1 :(得分:1)

使用

string imdbID = s.Split(new string[]{ "\"imdbID\":\" }, StringSplitOptions.None)[1];
imdbID = imdbID.split(',')[0];