好吧,我不知道如何解释,但我有这样的文字:
abc=0;def=2;abc=1;ghi=4;jkl=2
我想要做的是选择abc=0
和abc=1
但不包括abc
部分......
我的正则表达式是:abc=\d+
,但它包含abc
部分...
我对此问题something,答案是这样的:(?!abc=)\d+
但它选择了文本中的所有数字......
那么,有人可以帮助我吗?
提前致谢。
答案 0 :(得分:3)
如果您的语言支持\K
,那么您可以使用以下正则表达式来匹配字符串abc=
之后的数字,
abc=\K\d+
OR
如果您的语言不支持\K
,使用积极的后视,
(?<=abc=)\d+
C#代码将是,
{
string str = "abc=0;def=2;abc=1;ghi=4;jkl=2";
Regex rgx = new Regex(@"(?<=abc=)\d+");
foreach (Match m in rgx.Matches(str))
Console.WriteLine(m.Value);
}
<强>解释强>
(?<=abc=)
正面的后视,实际上将匹配标记设置在字符串abc=
之后。\d+
匹配一个或多个数字。答案 1 :(得分:2)
这里你不需要lookaround断言。您只需使用capturing group捕获所需的匹配上下文,然后使用匹配。Groups属性返回匹配的组。
abc=(\d+)
示例强>:
string s = "abc=0;def=2;abc=1;ghi=4;jkl=2";
foreach (Match m in Regex.Matches(s, @"abc=(\d+)"))
Console.WriteLine(m.Groups[1].Value);
<强>输出强>
0
1