[英]Regex to get string between \“ and \”
由于我是正则表达式的新手,所以我想在这里获得帮助。
var test =“ and([[family]:\\”树木\\“或[family]:\\”颜色\\“)”
我想提取家庭名单:
树木
颜色
我使用了以下模式。
Regex.Matches(test, @"[family]:\*\");
它对我不起作用,任何建议都将有所帮助。
您可以使用
Regex.Matches(filters.queryString, @"\[family]:\s*""([^""]*)""")
.Cast<Match>()
.Select(m => m.Groups[1].Value.Trim())
.ToList();
您需要的值在组1中,并且使用.Trim()
, .Trim()
前导/后缀空格从这些子字符串中删除。
图案细节
\\[family]:
- [family]
子字符串 \\s*
-0+空格字符 "
-双引号 ([^"]*)
-捕获组#1:零个或多个除"
"
-双引号。 C#演示 :
var test = "and ( [family]: \" trees \" or [family]: \" colors \" )";
var result = Regex.Matches(test, @"\[family]:\s*""([^""]*)""")
.Cast<Match>()
.Select(m => m.Groups[1].Value.Trim())
.ToList();
foreach (var s in result)
Console.WriteLine(s); // => trees, colors
如果要从字面上匹配[
,则必须对其进行转义\\[
否则它将启动一个字符类 。
获得所需值的一种方法是使用正向后视 (<=
和正向前视(?=
:
说明
(?<=\\[family]: ")
正向后方断言左侧是[family]:
[^"]+
匹配不是一个"
使用一个或多个次否定的字符类 (?=")
正向前瞻,它断言右侧是"
例如:
string pattern = @"(?<=\[family]: "")[^""]+(?="")";
var test = "and ( [family]: \" trees \" or [family]: \" colors \" )";
foreach (Match m in Regex.Matches(test, pattern))
Console.WriteLine(m.Value.Trim());
这将导致:
trees
colors
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.