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

本文关键字:STRING 匹配 | 更新日期: 2023-09-27 18:24:40

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

可能的字符串

字符串1

这是一些文本''0"§%lfsdlsrblabla''0''0}dfglpdfgl

String2

这是一些文本

String3

这是一些文本''0

所需匹配/结果

这是一些文本

我只想匹配所有-直到,除了'0-只产生1个匹配。('0之前的所有内容)
重要的对于我的情况来说,它每次都会匹配,即使没有给出'0

谢谢你的帮助!

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

您可以尝试以下模式:

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

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

我喜欢

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

因为使用任意字符串都很容易实现。基本技巧是负前瞻,它断言从这一点开始的字符串与内部的正则表达式。我们在后面加了一个通配符,意思是"字面上任何不在字符串开头的字符。如果你的字符串应该更改,这是一个简单的更新-只是

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

只要你能正确地逃脱那根绳子。见鬼,使用这种模式,您只是生成任何分隔符字符串的regex_escape函数。

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