是否可以编写与未出现次数的嵌套模式匹配的正则表达式?例如,当外括号内嵌有未知数量的打开/关闭括号时,正则表达式是否可以匹配开括号和右括号?
例如:
public MyMethod()
{
if (test)
{
// More { }
}
// More { }
} // End
Run Code Online (Sandbox Code Playgroud)
应该匹配:
{
if (test)
{
// More { }
}
// More { }
}
Run Code Online (Sandbox Code Playgroud) 考虑要求找到一对匹配的字符集,并删除它们之间的任何字符,以及那些字符/分隔符.
以下是分隔符集:
[] square brackets
() parentheses
"" double quotes
'' single quotes
Run Code Online (Sandbox Code Playgroud)
以下是一些应匹配的字符串示例:
Given: Results In:
-------------------------------------------
Hello "some" World Hello World
Give [Me Some] Purple Give Purple
Have Fifteen (Lunch Today) Have Fifteen
Have 'a good'day Have day
Run Code Online (Sandbox Code Playgroud)
以及一些不匹配的字符串示例:
Does Not Match:
------------------
Hello "world
Brown]co[w
Cheese'factory
Run Code Online (Sandbox Code Playgroud)
如果给定的字符串不包含匹配的分隔符集,则不会对其进行修改.输入字符串可以具有许多匹配的分隔符对.如果一组2个分隔符重叠(即he[llo "worl]d"),那就是我们可以忽略的边缘情况.
该算法看起来像这样:
string myInput = "Give [Me Some] Purple (And More) Elephants";
string pattern; //some pattern
string output = Regex.Replace(myInput, pattern, string.Empty);
Run Code Online (Sandbox Code Playgroud)
问题:如何使用C#实现这一目标?我倾向于正则表达式.
额外:是否有简单的方法可以在常量或某种列表中匹配这些起始和结束分隔符?我正在寻找的解决方案很容易更改分隔符,以防业务分析师提出新的分隔符集.