正则表达式提取值出现了错误,求解决(分很多,可以散)
正则表达式提取值出现了异常,求解决(分很多,可以散)
本来只想取到"第一个要取的目标"和" 第二个要取的目标"这两个字串,但中间多了一个貌似不匹配的"奇怪这个为什么会取到"
求高手解释,并帮我达到目的,谢谢
------解决方案--------------------
------解决方案--------------------
你改成
MatchCollection mc = GetContents(str, "aaa(.(?!bbb))*?.bbb", "MMM");试试
//GetContents()功能是取得在str中,出现在 s 和e中间的内容,返回多个匹配结果
public static MatchCollection GetContents(string str, string s, string e)
{
Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
return rg.Matches(str);
}
static void Main(string[] args)
{
string str = " aaa 没意义的话\r\n 无所谓\r\n bbb 第一个要取的目标 MMM 乱塞的 \r\n 随便什么 ccc 输什么都行 \r\n 无论啦 \r\n 真的无所谓 bbb 奇怪这个为什么会取到 MMM 乱来的 \r\n 干扰的 aaa 无所谓的文字 \r\n 随便了 \r\n 没有也行 bbb 第二个要取的目标 MMM";
MatchCollection mc = GetContents(str, "aaa[.\\s\\S]*?bbb", "MMM");
for (int i = 0; i < mc.Count; i++)
{
Console.WriteLine(mc[i].ToString());
Console.WriteLine("--------------------------------------------------");
}
Console.ReadKey();
}
本来只想取到"第一个要取的目标"和" 第二个要取的目标"这两个字串,但中间多了一个貌似不匹配的"奇怪这个为什么会取到"
求高手解释,并帮我达到目的,谢谢
------解决方案--------------------
string str = " aaa 没意义的话\r\n 无所谓\r\n bbb 第一个要取的目标 MMM 乱塞的 \r\n 随便什么 ccc 输什么都行 \r\n 无论啦 \r\n 真的无所谓 bbb 奇怪这个为什么会取到 MMM 乱来的 \r\n 干扰的 aaa 无所谓的文字 \r\n 随便了 \r\n 没有也行 bbb 第二个要取的目标 MMM";
foreach (Match m in Regex.Matches(str, @"(?<=aaa[^M]*?bbb\s+)[\s\S]*?(?=\s+MMM)"))
{
Console.WriteLine(m.Value);
}
------解决方案--------------------
你改成
MatchCollection mc = GetContents(str, "aaa(.(?!bbb))*?.bbb", "MMM");试试