在STRING或STRING之前匹配所有内容

时间:2013-07-24 17:17:27

标签: c# regex string matching

我已经搜索了几个小时,并且已经尝试了大量不同的模式 - 有一个简单的事情我不想用正则表达式来实现,但不知怎的,它根本不会按照我的意愿去做:< / p>

可能的字符串

字符串1

  

这是一些文字\ 0“§%lfsdrlsrblabla \ 0 \ 0 \ 0} dfglpdfgl

字符串2

  

这是一些文字

STRING3

  

这是一些文字\ 0

期望的比赛/结果

  

这是一些文字

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以尝试使用此模式:

@"^(?:[^\\]+|\\(?!0))+"

换句话说:除了反斜杠或反斜杠之外的所有字符都没有后跟0

答案 1 :(得分:1)

我喜欢

@"^((?!\\0).)*"

因为使用任意字符串都很容易实现。基本技巧是否定先行,它断言此时开始的字符串与 正则表达里面。我们使用通配符来表示“字面意思是任何不在我的字符串开头的字符。如果你的字符串应该改变,这是一个简单的更新 - 只是

@"^((?!--STRING--).)*)"

只要你正确地逃脱那个字符串。哎呀,使用这种模式,你只是一个regex_escape函数来生成任何分隔符字符串。

奖励:当你的字符串以分隔符开头时,使用*而不是+将返回一个空字符串作为有效匹配。