代码之家  ›  专栏  ›  技术社区  ›  SimoNR

用正则表达式捕获特殊字符后的字符

  •  -2
  • SimoNR  · 技术社区  · 6 年前

    我有这样的弦

    "Colour: Black
    Size: L"
    
    "Colour: Black
    Size: XS"
    

    我想要捕捉的只是大小之后的字符:但是由于没有空格,我得出了以下结论

    (?<=\Size:)[^\]]+
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   Pushpesh Kumar Rajwanshi    6 年前

    随着帖子的更新,也更新了所需的regex。

    Size:\s+([^"]+?)"
    

    说明:

    • 大小:\s+-->这与大小匹配:字面上后跟一个或多个空格字符
    • “-->在输入结束时要求doublequote停止捕获预期的数据

    https://regex101.com/r/hxi7dJ/3

    这是正则表达式的C代码示例,

        public static void Main(string[] args)
        {   
            string s = "\"Colour: Black Size: XS\"";
            string sizeVal = Regex.Match(s, @"Size:\s+([^""]+?)""").Groups[1].Value;
            Console.WriteLine("sizeVal: " + sizeVal);
        }
    

    这将产生以下输出,

    sizeVal: XS
    

    注意我是如何在正则表达式中用一个额外的双引号转义双引号的。您可以用输入字符串的任何值来检查它。

        2
  •  2
  •   Matt.G    6 年前

    尝试正则表达式: (?<=Size: ).*?(?=")

    Demo

        3
  •  0
  •   Bilesh Ganguly    6 年前

    /(?<=Size:\s)(\w+)(?=\")/g
    
    1. 正面回顾 (?<=Size:\s) :断言下面的正则表达式匹配。 Size: 匹配字符大小:按字面(大小写) \s 匹配任何空格字符(等于 [\r\n\t\f\v ] )
    2. 第一捕获组 (\w+) \w+ [a-zA-Z0-9_] ). + 一和无限之间的量词匹配 多次,尽可能多次,需要时回馈(贪婪)
    3. (?=\") :断言下面的正则表达式匹配。 \" 与角色匹配 "
    4. 全局模式标志 g