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

时间:2018-11-05 14:48:58

标签: regex

我有这样构建的字符串

"Colour: Black
Size: L"

"Colour: Black
Size: XS"

我要捕获的是Size之后的字符:但是没有空格,我想出了以下内容

(?<=\Size:)[^\]]+

3 个答案:

答案 0 :(得分:2)

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

Demo

答案 1 :(得分:1)

帖子更新后,还更新了所需的正则表达式。

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

说明:

  • 大小:\ s +->与大小:匹配,字面上是一个或多个空格字符
  • ([[^“] +?)->捕获您感兴趣的字符串
  • ”->期望在输入末尾加双引号以停止捕获预期数据

演示,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 :(得分:0)

我不知道您的完整要求,但根据您的适应范围,我认为以下正则表达式将起作用。

/(?<=Size:\s)(\w+)(?=\")/g
  
      
  1. 正向后看 (?<=Size:\s):声明以下正则表达式匹配。 Size:与字符大小:字面值(大小写)匹配   敏感)。 \s匹配任何空白字符(等于   [\r\n\t\f\v ]
  2.   
  3. 第一捕获组(\w+)与任何单词字符(等于\w+)匹配。 [a-zA-Z0-9_]量词-匹配一个和无限个   次,尽可能多地回馈所需(贪婪)
  4.   
  5. 正面先行 +:声明以下正则表达式匹配。 (?=\")从字面上匹配字符\"(区分大小写)
  6.   
  7. 全局模式标志"(全局)修饰符匹配所有(第一次匹配后不返回)
  8.