正则表达式在匹配中反转

本文关键字:正则表达式 | 更新日期: 2023-09-27 18:35:51

我的字符串如下

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 .

正则表达式在匹配中反转

使用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
我想

你可以使用后视,如果我没记错的话,C# 正则表达式支持它。

您的正则表达式如下所示:

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

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

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

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

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

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