正则表达式在匹配中反转
本文关键字:正则表达式 | 更新日期: 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+