当前位置:  开发笔记 > 编程语言 > 正文

在C#中扩展[^,] +,正则表达式

如何解决《在C#中扩展[^,]+,正则表达式》经验,为你挑选了1个好方法。



1> Renaud Bompu..:

你可以使用类似于那些建议的正则表达式:

(?:^value_name\s+)?([^,]+)(?:\s*,\s*)?

第一组是非捕获的,并且匹配线的起点和value_name.
为了确保正则表达式对所有匹配仍然有效,我们通过使用'?'修改后的意思使该组可选(意味着最多匹配一次).

第二组是捕获并匹配您的vXX数据.

第三组是非捕获的,并且会匹配,它之前和之后的任何空格.
同样,我们通过使用'?'修饰符使其成为可选项,否则最后一'vXX'组将不匹配,除非我们以final结束字符串','.

在你的试验中,正则表达式不会多次匹配:你必须记住,如果你想要一个正则表达式匹配字符串中的多个匹配项,整个正则表达式需要匹配字符串中的每一个匹配项,所以你必须建立你的正则表达式不仅要匹配字符串的开头'value_name',还要匹配其中的每一个匹配项'vXX'.

在C#中,您可以使用以下代码列出所有匹配项和组:

Regex r = new Regex(@"(?:^value_name\s+)?([^,]+)(?:\s*,\s*)?");
Match m = r.Match(subjectString);
while (m.Success) {
    for (int i = 1; i < m.Groups.Count; i++) {
        Group g = m.Groups[i];
        if (g.Success) {
            // matched text: g.Value
            // match start: g.Index
            // match length: g.Length
        } 
    }
    m = m.NextMatch();
} 

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有