我有一个字符串 -
xyz":abc,"lmn
我想提取 abc。这将是什么正则表达式?
我正在尝试这个-
/xyz\":(.*?),\"lmn/
但它没有得到任何结果。
在c#中你可以使用
var regex = new Regex(@"(?<=xyz\"":).*?(?=,\""lmn)");
var value = regex.Match(@"xyz"":abc,""lmn").Value;
请注意,这使用了 c# 逐字字符串前缀@
,这意味着它\
不被视为转义字符。您将需要使用双精度"
,以便将单"
精度包含在字符串中。
此正则表达式使用前缀和后缀匹配规则,因此您无需从结果中选择特定组即可获得匹配。
或者,您可以使用组匹配
var regex=new Regex(@"xyz\"":(.*?),\""lmn");
var value = regex.Match(@"xyz"":abc,""lmn").Groups[1].Value;
您可以通过执行以下操作来检查是否存在匹配项
var match = regex.Match(@"xyz"":abc,""lmn");
var isMatch = match.Success;
然后根据您使用的正则表达式跟进match.Value
或跟进。match.Groups[1].Value
编辑
实际上在 ac# regex 中不需要转义,"
因此您可以使用以下任何一种。
var regex = new Regex("(?<=xyz\":).*?(?=,\"lmn)");
var regex = new Regex("xyz\":(.*?),\"lmn");
这两个不使用逐字字符串前缀,因此\"
仅在正则表达式中翻译为"
给出正则表达式(?<=xyz":).*?(?=,"lmn)
或xyz":(.*?),"lmn
此外,如果是整个字符串匹配而不是子字符串,您将需要以下之一。
var regex = new Regex("(?<=^xyz\":).*?(?=,\"lmn$)");
var regex = new Regex("^xyz\":(.*?),\"lmn$");