【问题标题】:Regular expression in C# to find matches like "x-[some_string]"C# 中的正则表达式,用于查找“x-[some_string]”等匹配项
【发布时间】:2016-04-06 11:49:02
【问题描述】:

什么是 C# 中用于在文本中查找匹配项的正则表达式 以“x-[”开头并以“]”结尾?

我尝试过这样的事情:

Regex urlRx = new Regex(@"^x-[.*]$", RegexOptions.IgnoreCase);

【问题讨论】:

标签: c# regex


【解决方案1】:

简单:

x-\[([^]]+)\]
# that is: look for x-[ literally
# capture and save anything that is not a ]
# followed by ]

a demo on regex101.com

【讨论】:

    【解决方案2】:

    这应该可行

    string input = "x-[ABCD]";
    string pattern = "^x-\\[(.*)\\]$";
    Regex rgx = new Regex(pattern);
    
    Match match = rgx.Match(input);
    
    if (match.Success) {
        Console.WriteLine(match.Groups[1].Value);
    }
    

    IDEONE DEMO

    更新

    正如Jan 所指出的,在x-[ABCDEFGHJJHGHGFGHGFVFGHGFGHGFGHGGHGGHGDCNJK]ABCD] 这样的情况下会出现太多的回溯。我更新的regex 和他的很相似

    ^x-\[([^\]]*)\]$
    

    【讨论】:

    • 匹配所有内容 (.*) 然后回溯 - 最好一开始就精确!
    【解决方案3】:

    你真的需要一个正则表达式吗?简单的String 操作应该可以达到您的目的。

    yourString.EndsWith("]");
    yourString.StartsWith("x-[");
    

    【讨论】:

    • 这是一个很大的文本,我需要所有与此模式匹配的单词
    • @Natali 好的,那么最好使用它.....投反对票:如果您需要对单个字符串执行这些操作,字符串操作可以为您提供更好的性能...参考@ 987654321@链接......这就是我推荐这个的原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2015-06-01
    • 1970-01-01
    相关资源
    最近更新 更多