我有这样构建的字符串
"Colour: Black
Size: L"
"Colour: Black
Size: XS"
我要捕获的是Size之后的字符:但是没有空格,我想出了以下内容
(?<=\Size:)[^\]]+
答案 0 :(得分:2)
尝试使用正则表达式:(?<=Size: ).*?(?=")
答案 1 :(得分:1)
帖子更新后,还更新了所需的正则表达式。
Size:\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
- 正向后看
(?<=Size:\s)
:声明以下正则表达式匹配。Size:
与字符大小:字面值(大小写)匹配 敏感)。\s
匹配任何空白字符(等于[\r\n\t\f\v ]
)- 第一捕获组:
(\w+)
与任何单词字符(等于\w+
)匹配。[a-zA-Z0-9_]
量词-匹配一个和无限个 次,尽可能多地回馈所需(贪婪)- 正面先行
+
:声明以下正则表达式匹配。(?=\")
从字面上匹配字符\"
(区分大小写)- 全局模式标志:
"
(全局)修饰符匹配所有(第一次匹配后不返回)