假设我有正则表达式var data = {
"Italy": {
"Milan": ["shop123"],
"Rome": ["shop2"]
},
"USA": {
"Los Angeles": ["shopXY"]
}
}
。
在.Net中,我可以使用match.Groups [1] .Captures访问该捕获组的所有捕获。
我也可以通过替换字符串访问这些捕获吗?
例如,对于输入字符串(\d)+
,我需要在替换字符串中使用5、2和3(而不仅仅是3,即$ 1)。
答案 0 :(得分:1)
如果您打算在单独的捕获组中捕获每个数字,则实际上需要为每个数字创建一个单独的捕获组,如下所示:
(\d)(\d)(\d)
注意:这不能很好地扩展,并且您不能匹配3位数以外的任何其他长度的数字。换句话说,23
或345667
上都没有数学!
可以在下面找到一个很好的页面,其中详尽而详尽地解释了为什么不能像(\d)+
那样完成:
https://www.regular-expressions.info/captureall.html
因此,如果这确实是您想要的,则需要制作自己的循环,以分别在字符串中搜索每个数字。
另一方面,如果您需要捕获数字而不是单个数字,则只需将+
标记放在错误的位置即可。我想你应该写:
(\d+)
答案 1 :(得分:0)
我认为OP希望分别获得每个数字匹配。 也许这对您有帮助:
<!-- language: lang-vb -->
' Create a list to put the resulting matches in
Dim ResultList As StringCollection = New StringCollection()
Dim RegexObj As New Regex("(\d)")
Dim MatchResult As Match = RegexObj.Match(strName)
While MatchResult.Success
ResultList.Add(MatchResult.Groups(1).Value)
' Console.WriteLine(MatchResult.Groups(1).Value)
MatchResult = MatchResult.NextMatch()
End While