正则表达式在匹配中反转

时间:2013-10-18 10:53:40

标签: c# regex

我的字符串如下

Data['5']=new Array('Jame', '54', '22', 'Dis')

我的正则表达式如下(Data\[.+\])会返回Data['5'],我知道我可以使用正则表达式(\ d +)并再次过滤来获取5,但是通过这样做它有两次使用正则表达式,我认为这不是一个好的方法,我正在使用C#。

无论如何,我可以将(Data\[.+\])(\d+)组合在一起,或者允许我在Data['5']=new Array('Jame', '54', '22', 'Dis')这样的数据中获取数字值的任何正则表达式组合将返回5

4 个答案:

答案 0 :(得分:1)

使用Data\['(\d+)'\].*模式捕获具有数据索引的组:

var s = "Data['5']=new Array('Jame', '54', '22', 'Dis')";
var match = Regex.Match(s, @"Data\['(\d+)'\].*");
var index = match.Groups[1].Value; // 5

答案 1 :(得分:1)

如果我没记错的话,我想你可以使用C#Regex支持的后视。

你的正则表达式会是:

(?<=(Data\['))\d+

这应该选择你想要的行,并只返回方括号内的数字。

答案 2 :(得分:0)

您可以简单地使用以下模式:Data\['([0-9]+)'\]。然后,您的第一场比赛将包含您要查找的号码。

正如你所说,没有必要进行两场比赛。使用上述模式,您不是在括号(.+)中查找任何字符序列,而是仅查找数字(\d+)。

答案 3 :(得分:0)

考虑以下Regex ......

(?<=Data\[\')\d+