从C#中的正则表达式中排除字符串

时间:2011-12-05 20:14:15

标签: regex c#-3.0

我接下来要使用c#regex类:

[^\r\n]+[^,"condicionesDePago"]

在下一篇文章中搜索:

“CREDITO 30 DIAS”,“condicionesDePago”

我想得到左边的部分,在这种情况下:“CREDITO 30 DIAS”但我只得到:“CREDITO 30

我失踪了什么?

2 个答案:

答案 0 :(得分:2)

看起来你对字符类的用途有误解。它不是对单词进行操作,而是对单个字符进行操作。模式的这一部分[^,"condicionesDePago"]表示字符应该匹配,前提是该字符逗号,双引号或指定的字母。

您可能打算使用预测:

@"[^\r\n]+(?=,""condicionesDePago"")"

或者,只要未指定\n(但它可以匹配RegexOptions.Singleline),这可以写成如下,并且与\r不匹配:

@".+?(?=,""condicionesDePago"")";

答案 1 :(得分:0)

如果您始终希望文字为上述格式,那么您可能希望在匹配中明确:

   "(\w+ [0-9]+ \w+)"(?=,"condicionesDePago")

这应该与Credit 30 Days匹配(即模式字母数字字母 - \ w + [0-9] * \ w +),然后是condicionesDePago - (?=,“condicionesDePago”) - 称为正向前瞻。

我总是使用http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx来测试我的正则表达式,但我敢打赌其他人也有他们的喜欢。