我很难找到一个很好的资源来解释如何在C#中使用命名捕获组.这是我到目前为止的代码:
string page = Encoding.ASCII.GetString(bytePage);
Regex qariRegex = new Regex("<td><a href=\"(?<link>.*?)\">(?<name>.*?)</a></td>");
MatchCollection mc = qariRegex.Matches(page);
CaptureCollection cc = mc[0].Captures;
MessageBox.Show(cc[0].ToString());
Run Code Online (Sandbox Code Playgroud)
然而,这总是只显示整行:
<td><a href="/path/to/file">Name of File</a></td>
Run Code Online (Sandbox Code Playgroud)
我已经尝试过我在各种网站上找到的其他几种"方法",但我一直得到相同的结果.
如何访问我的正则表达式中指定的命名捕获组?
我正在尝试创建一个通用的格式化程序/解析器组合.
示例场景:
var format = "{0}-{1}"var arr = new[] { "asdf", "qwer" }var res = string.Format(format, arr)我想要做的是将格式化的字符串恢复回对象(字符串)数组.像(伪代码)的东西:
var arr2 = string.Unformat(format, res)
// when: res = "asdf-qwer"
// arr2 should be equal to arr
Run Code Online (Sandbox Code Playgroud)
有没有经验做过这样的事情?我正在考虑使用正则表达式(修改原始格式字符串,然后将其传递给Regex.Matches以获取数组)并为格式字符串中的每个占位符运行它.这是可行的还是还有其他更有效的解决方案?