0

我的字符串如下

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

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

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

4

4 回答 4

1

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

你的正则表达式就像:

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

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

于 2013-10-18T11:10:52.790 回答
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
于 2013-10-18T10:57:48.103 回答
0

考虑以下正则表达式...

(?<=Data\[\')\d+
于 2013-10-18T13:08:05.523 回答
0

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

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

于 2013-10-18T10:57:58.130 回答