正则表达式 - 模式捕获除模式[.net]之外的所有内容

时间:2011-02-23 19:32:35

标签: .net regex

我想抓住任何东西,但不包括特定的模式。我的实际问题与解析html中的信息有关,但我将问题提炼为一个例子,希望澄清我的问题。

来源

xaxbxcabcabc

所需匹配

xaxbxc

如果我使用前瞻,表达式将捕获第一次出现

.*(?=abc) => xaxbxcabc

我想要一个否定的角色类的东西,只是为了一个否定的模式。

.*[^abc] //where abc as a pattern instead of a list giving anything but a, b or c

我正在使用http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx进行测试

3 个答案:

答案 0 :(得分:4)

非贪婪(懒惰)量词*?在这里很有用,例如

^(?<captured>.*?)abc.*$

编辑:为了清楚,显然捕获(当然)不需要,真正重要的部分就是

(.*?)abc

答案 1 :(得分:3)

如果您锚定正则表达式,您将解决问题(+使用延迟量词):

"^.*?(?=abc)"

答案 2 :(得分:2)

为什么不使用replace

string result = new Regex("abc.*$").Replace ( input, "" );

这将从第一个匹配的短语开始删除所有内容,直到那时为您留下所有内容。