首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#正则表达式获取特定字符之后的值,但需要检查前面的字符

C#正则表达式获取特定字符之后的值,但需要检查前面的字符
EN

Stack Overflow用户
提问于 2018-06-02 03:49:57
回答 1查看 46关注 0票数 -3

我想为以下场景创建正则表达式

name like %name --匹配并提取%name

name like '%name' --不应匹配,因为它在%

name like ' %name' --不应匹配,因为前一个字符是‘(忽略空格)

name like%name匹配并提取%name

这是我得到的^'%\w+,但这不包括最后两种情况

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 04:11:14

这可能适合您的需要,尽管它确实取决于前缀为name like的字符串。

void Main()
{
    var strings = new string[] {"name like %name", "name like '%name'", "name like ' %name'", "name like%name"};
    var regex = new Regex("^name like ?(%\\w+)");
    foreach (var item in strings)
    {
        Console.WriteLine($"string: \"{item}\" matches: {regex.IsMatch(item)} extracted: {(regex.Match(item).Groups.Count > 0 ? regex.Match(item).Groups[1].Value : string.Empty)}");
    }
    //Output:
    //string: "name like %name" matches: True extracted: %name
    //string: "name like '%name'" matches: False extracted: 
    //string: "name like ' %name'" matches: False extracted: 
    //string: "name like%name" matches: True extracted: %name
}

正则表达式的细目如下:

^name like:以name like开头的字符串

?:可选的空格

(%\\w+):我们的匹配组,选取a-zA-Z_中以%为前缀的任意数量的字符

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

https://stackoverflow.com/questions/50650185

复制
相关文章

相似问题

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