这就是我的输入的样子:
"A1-BC-12345-D2"
这就是我的正则表达式的样子。它需要在最后一个之间 - 和之前的一个:
"([^-]+)(?=-[^-]+-?$)"
我正在尝试在没有循环的变量中捕获12345:
这就是我的代码的样子:
string output = Regex.Replace("A1-BC-12345-D2", @"([^-]+)(?=-[^-]+-?$)", "$1");
输出与输入相同。
我已经在regex101.com上验证了正则表达式,它正在捕获正确的值。
如何使用捕获组在输出中获得12345?
我无法使用Match
或循环播放,因为我尝试在AD FS声明规则中使用此规则,该规则仅支持Replace
答案 0 :(得分:2)
如果您只能使用替换,那么您应该修改正则表达式,以便它选择您不想要的所有内容,然后在捕获组中放置要做的事情。然后使用替换字符串来保持捕获组的完整性(就像您一样)。
^.*?([^-]+)-[^-]+-?$
string output = Regex.Replace("A1-BC-12345-D2", @"^.*?([^-]+)-[^-]+-?$", "$1");