【发布时间】:2016-10-26 17:01:44
【问题描述】:
我在 C# 中使用 Regex.Replace。在替换的字符串中,我想设置一个条件,即仅当捕获到可选组之一时才出现部分字符串。例如,我有这个正则表达式:-
(?<Expiry>\d+[my])\s+(?<Flag>[a-z][A-Z])?\s*$)
请注意,Flag 捕获的组是可选的。
替换字符串是
"Expiry is ${Expiry}. Flag is : ${Flag}"
现在我希望"Flag is : ${Flag}" 字符串仅在捕获标志组时出现在结果中。
我正在使用以下代码:
var regex = new
Regex("(?<Expiry>\d+[my])\s+(?<Flag>[a-z][A-Z])?\s*$)",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
string result = regex.Replace("10y", "Expiry is ${Expiry}. Flag is : ${Flag}";
结果应该是Expiry is 10y。
string result = regex.Replace("10y abc", "Expiry is ${Expiry}. Flag is ${Flag}");
结果应为“到期时间为 10 年。标志为:abc”。
非常感谢任何帮助。
【问题讨论】:
-
你能分享一些你当前的代码吗?
-
请花点时间熟悉一下编辑器。如果您发布代码,您应该使用一个代码格式化命令 (Ctrl-K),否则 markdown 将解释
*(和其他),从而改变您的代码的含义。