C# 在字符串或字符串之前匹配所有内容

C# 在字符串或字符串之前匹配所有内容,c#,regex,string,matching,C#,Regex,String,Matching,我搜索了几个小时,已经尝试了很多不同的模式-有一件简单的事情我不想用regex实现,但不知怎的,它就是做不到我想要的: 可能的字符串 String1 这是一些文本\0“§%LFSDRLSRBLALA\0\0\0}dfglpdfgl String2 这是一些文本 弦3 这是一些文本\0 期望的匹配/结果 这是一些文本 我只想匹配所有的-直到和除了\0-导致只有一个匹配。(\0之前的所有内容) 重要的对于我的情况是,它每次都会匹配,即使没有给出\0 感谢您的帮助!您可以尝试以下模式: @"^(?:[

我搜索了几个小时,已经尝试了很多不同的模式-有一件简单的事情我不想用regex实现,但不知怎的,它就是做不到我想要的:

可能的字符串 String1 这是一些文本\0“§%LFSDRLSRBLALA\0\0\0}dfglpdfgl

String2 这是一些文本

弦3 这是一些文本\0

期望的匹配/结果 这是一些文本

我只想匹配所有的-直到除了
\0
-导致只有一个匹配。(
\0
之前的所有内容)
重要的对于我的情况是,它每次都会匹配,即使没有给出
\0


感谢您的帮助!

您可以尝试以下模式:

@"^(?:[^\\]+|\\(?!0))+"
换句话说:除了反斜杠或反斜杠后面不跟0之外的所有字符

@"^((?!\\0).)*"
因为它很容易用任意字符串实现。基本技巧是负向前看,它断言从这一点开始的字符串与 正则表达式。我们在后面加了一个通配符,意思是“不在字符串开头的任何字符”。如果字符串应该更改,这是一个简单的更新-只需

@"^((?!--STRING--).)*)"
只要你能正确地逃脱那根弦。见鬼,使用这种模式,您只不过是一个
regex\u escape
函数,无法生成任何分隔符字符串


额外好处:当字符串以分隔符开头时,使用*而不是+将返回一个空白字符串作为有效匹配。

您是指字符串反斜杠零还是表示空字符?对不起,我指的是“反斜杠零”-(甚至可以在正则表达式中声明空字符吗?)@user2615607:是的,带有
\u0000
谢谢您的建议!哇,反应很快-见鬼,我一个人看着这个就头疼,但它就像一个符咒-谢谢!