我想抓住任何东西,但不包括特定的模式。我的实际问题与解析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进行测试
答案 0 :(得分:4)
非贪婪(懒惰)量词*?
在这里很有用,例如
^(?<captured>.*?)abc.*$
编辑:为了清楚,显然捕获(当然)不需要,真正重要的部分就是
(.*?)abc
答案 1 :(得分:3)
如果您锚定正则表达式,您将解决问题(+使用延迟量词):
"^.*?(?=abc)"
答案 2 :(得分:2)
为什么不使用replace:
string result = new Regex("abc.*$").Replace ( input, "" );
这将从第一个匹配的短语开始删除所有内容,直到那时为您留下所有内容。