我确信这很简单,我可能会因为在我的个人资料中出现这个问题而感到尴尬,但我似乎无法正确使用此正则表达式。
我想从以下字符串的最后一组中提取数字:
属性[1] .Securitymeasures [14] .AdditionalSecurityType
所以我想要一个将返回 14
的正则表达式我想出的正则表达式是:
然而 - 比赛正在返回“[14]” - 包括括号,我不明白为什么。我用括号包围了\ d,这应该意味着这是我想要捕获的数据。
答案 0 :(得分:2)
嗯,你的正则表达式实际上匹配
因此返回括号的事实是完全正确的。如果您调试以下
Regex.Match("Properties[1].Securitymeasures[14].AdditionalSecurityType",
@"\[(\d)+\]")
.Groups[1]
.Value // equals '1'
你会看到\ d被捕获为一个组(毕竟你把它放在parens中)。
您要做的是使用“正面观察”来指定您在括号后面找一个或多个数字。
(?<=\[)\d+
说
您可以使用正向前瞻来组合它,但如果要解析整数索引,那么您始终可以预期只有括号内的数字可以跳过前瞻。
答案 1 :(得分:2)