.NET Regex使用后面/后面的外观

时间:2011-12-09 04:00:33

标签: c# regex

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

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

这样:

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

摘自视觉工作室设置项目。它匹配我正在使用的在线工具,但它使用Regex.Match()

不匹配

以下是代码:

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

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

编辑:

也许我只是在使用“向前看”并在.net正则表达式后面看错了?因为如果我删除了外观,这可以工作,但它匹配整行,我不想要。所以我用lookarounds来匹配我想要的值。

在.net regex中使用lookarounds时,其他人有类似的经历吗?

1 个答案:

答案 0 :(得分:1)

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

下载的免费工具对其进行了测试

enter image description here

但是,如果您使用RegEX与RegexOptions“IgnorePatternWhitespace”

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

在这种情况下,您将无法获得任何匹配