【问题标题】:.NET Regex using look behind/ahead.NET Regex 使用后视/前瞻
【发布时间】:2011-12-09 04:00:33
【问题描述】:

为什么这个正则表达式不匹配:

(?<="Title" = "8:)[^"]*(?=")

这个:

"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:"
"Title" = "8:something"
"Subject" = "8:"
"ARPCONTACT" = "8:something"
"Keywords" = "8:"

它摘自 Visual Studio 设置项目。它在我正在使用的在线工具中匹配,但使用 Regex.Match() 时不匹配

代码如下:

var productTitleRegex = @"(?<=""Title"" = ""8:)[^""]*(?="")";
var titleMatch = Regex.Match(content, productTitleRegex);

titleMatch.Success 如果为 false 且 value 不返回任何内容

编辑:

在 .net 正则表达式中使用 Look ahead 和 Look behind 时,也许我只是遗漏了一些东西?因为如果我删除环视,这可行,但它匹配整行,这是我不想要的。所以我使用lookarounds来匹配我想要的值。

其他人在 .net 正则表达式中使用环视时也有类似的经历?

【问题讨论】:

  • 我在 VS2008 中用 C# 测试过
  • 对,对不起,我的错。我一直在使用错误的输入文件:/

标签: c# regex


【解决方案1】:

我在 VS2008 中使用 C# 测试了您的正则表达式模式,它找到了与“某物”作为值的匹配项。看起来它工作正常。我还用从http://www.radsoftware.com.au/regexdesigner/下载的免费工具测试了它

但是,如果您将 RegEX 与 RegexOptions "IgnorePatternWhitespace" 一起使用,它将不起作用

    var productTitleRegex = @"(?<=""Title"" = ""8:)[^""]*(?="")";
    var titleMatch = Regex.Match(content, productTitleRegex, RegexOptions.IgnorePatternWhitespace);

在这种情况下你不会得到任何匹配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多