首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex -改进搜索并添加第三组

Regex -改进搜索并添加第三组
EN

Stack Overflow用户
提问于 2013-03-08 10:01:12
回答 1查看 70关注 0票数 3

这是对我上一个问题的改进:c# generate random string based on pattern

我有如下代码:

代码语言:javascript
复制
class Generator
{
    private static readonly Random R = new Random();
    private static readonly char[] L = { 'a', 'b', 'c', 'd', 'e' };
    private static readonly char[] U = { 'A', 'B', 'C', 'D', 'E' };
    private static readonly char[] S = { '!', '@', '#', '$', '%' };

    public static string FromPattern(string pattern)
    {
        return Regex.Replace(pattern, @"\[([Ccds])(?::([\d]+))?\]", ReplaceSingleMatch);
    }

    private static string ReplaceSingleMatch(Match m)
    {
        int length;
        if (!int.TryParse(m.Groups[2].Value, out length))
            length = 1;

        var output = new StringBuilder();
        while (output.Length != length)
        {
            switch (m.Groups[1].Value)
            {
                case "d"://digits
                    output.Append(R.Next(0, 9));
                    break;
                case "c"://lowercase char
                    output.Append(L[R.Next(L.Length)]);
                    break;
                case "C"://uppercase char
                    output.Append(U[R.Next(U.Length)]);
                    break;
                case "s"://special char
                    output.Append(S[R.Next(S.Length)]);
                    break;
            }
        }
        return output.ToString();
    }
}

使用上面的内容,我可以写:

代码语言:javascript
复制
Generator.FromPattern("ID: [d:3][c:2]#[C][s:2]")

我将得到如下示例输出:ID: 263ac#D$!

所以当我输入[d]时,我得到了个位数,如果输入[d:5],我得到了5位数字。

我想要添加的是范围,所以当我输入[d:2-5]时,我会得到2到5个随机数字。

我最大的问题是regex,休息很容易:)

我需要我的regex搜索下面的组:

  • [d]
  • [d:3] (它必须是冒号后面的数字),
  • [d:2-5] (用破折号分隔的两个数字)

欢迎任何关于改进的建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-08 10:10:54

正则表达式的可怕工具:http://www.ultrapico.com/Expresso.htm

下面是我想出的表达式(带有命名的捕获组):

代码语言:javascript
复制
\[(?<type>[Ccds])(:(?<a>[\d]+)(-(?<b>[\d]+))?)?\]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15291297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档