我很难找到一个很好的资源来解释如何在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)
我已经尝试过我在各种网站上找到的其他几种"方法",但我一直得到相同的结果.
如何访问我的正则表达式中指定的命名捕获组?
我想替换给定字符串中的第一个匹配项.
我怎样才能在.NET中实现这一目标?
可能重复:
解析格式化的字符串.
如何使用String.Format
格式并将其输出转换为输入?
例如:
string formatString = "My name is {0}. I have {1} cow(s).";
string s = String.Format(formatString, "strager", 2);
// Call the magic method...
ICollection<string> parts = String.ReverseFormat(formatString, s);
// parts now contains "strager" and "2".
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用正则表达式来执行此操作,但我想使用相同的格式字符串,因此我只需要维护一行代码而不是两行代码.
我的任务是创建一个部分可编辑的RichTextBox
.我已经在Xaml中看到了TextBlock
为这些ReadOnly
部分添加元素的建议,但是它具有不能很好地包装的不期望的视觉效果.(它应该显示为单个连续文本块.)
我使用一些反向字符串格式化修补了一个工作原型来限制/允许编辑,并将其与动态创建内联Run
元素结合起来用于显示目的.使用字典存储文本的可编辑部分的当前值,我会Run
根据任何TextChanged
事件触发器相应地更新元素- 并且如果可编辑部分的文本被完全删除,它将被替换回其默认值.
在字符串中:"嗨,NAME,欢迎来到SPORT营地." ,只有NAME和SPORT可编辑.
?????????????????? ??????????????????
Default values: ? Key ? Value ? Edited values: ? Key ? Value ?
?????????????????? ??????????????????
? NAME ? NAME ? ? NAME ? John ?
? SPORT ? SPORT ? ? SPORT ? Tennis ?
?????????????????? ??????????????????
"Hi NAME, welcome to SPORT camp." "Hi John, welcome to Tennis camp." …
Run Code Online (Sandbox Code Playgroud)