C#正则表达式搜索给出错误

时间:2017-06-02 09:03:24

标签: c# regex search text-search

我正在尝试执行一个程序,在文本文件中搜索某些标记,并查看这些标记之间是否有文本。以下标签示例。

--<UsrDef_Mod_Trigger_repl_BeginMod>
--<UsrDef_Mod_Trigger_repl_EndMod>

所以我想搜索--<UsrDef_Mod__Begin_End

我制作了这些RegExp,但每一个都是假的。

if (Regex.Match(line, @"/--<UsrDef_Mod_.*_BeginMod>/g", RegexOptions.None).Success)
else if (Regex.Match(line, @"/--<UsrDef_Mod_.*_EndMod>/g", RegexOptions.None).Success)

所以任何帮助找到我出错的地方。我使用regexr.com检查我的正则表达式并在那里获得匹配但不在C#中。

3 个答案:

答案 0 :(得分:4)

.NET库Regex不了解window.onload = function() { if($(window).width() > 991) { $('#main-slider').removeClass('hidden'); } else { $('#main-slider').addClass('hidden'); } } 包装器。

删除它:

"/ /g"

答案 1 :(得分:2)

if (Regex.Match(line, @"--<UsrDef_Mod_.*_BeginMod>", RegexOptions.None).Success)
if (Regex.Match(line, @"--<UsrDef_Mod_.*_EndMod>", RegexOptions.None).Success)

这两者都匹配 - 你只需删除/ - 和/ g选项 - 根据Henk Holtermann的答案 - a comparison of perl and c# regex options on SO - 供进一步参考。

答案 2 :(得分:0)

var matches = Regex.Matches(text, @"<UsrDef_Mod_([a-zA-Z_]+)_BeginMod>([\s\S]+?)<UsrDef_Mod_\1_EndMod>");
if (matches != null)
    foreach (Match m in matches)
        Console.WriteLine(m.Groups[2].Value);

组#2将包含两个标签内的文本。