我的字符串如下
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
答案 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+