string pat = left + "(.*?)" + right; pat = "(?:" + left + ")" + "(.*?)" + "(?:" + right + ")"; Regex regex = new Regex(pat); Match match = regex.Match(str); Console.WriteLine("结果:" + match.Value.Trim());为什么输出的匹配的字符串还是包括了left与right
时间: 2024-02-20 12:57:14 浏览: 232
带有* ?的字符串匹配问题
根据你提供的代码,我可以看出这是一个正则表达式的匹配过程。其中,left和right是两个特定的字符串,用来表示匹配的左右边界。
在这个正则表达式中,我们使用了非捕获组 `(?:)` 将 left 和 right 包裹起来,以确保它们不会被匹配出来。但是,即使这样,匹配的结果中仍然会包含 left 和 right,这是因为我们在匹配过程中使用了 `.*?`,这个通配符会匹配任意字符,包括 left 和 right。
想要去掉结果中的 left 和 right,可以使用正则表达式的替换功能,将结果中的 left 和 right 替换为空字符串即可。例如:
```
string result = Regex.Replace(match.Value.Trim(), pat, "");
Console.WriteLine("结果:" + result);
```
阅读全文