匹配STRING或STRING之前的所有内容
本文关键字:STRING 匹配 | 更新日期: 2023-09-27 18:24:40
我已经搜索了几个小时,已经尝试了很多不同的模式-有一件简单的事情我不想用regex实现,但不知怎么的,它就是做不到我想要的:
可能的字符串
字符串1
这是一些文本''0"§%lfsdlsrblabla''0''0}dfglpdfgl
String2
这是一些文本
String3
这是一些文本''0
所需匹配/结果
这是一些文本
我只想匹配所有-直到和,除了'0
-只产生1个匹配。('0
之前的所有内容)
重要的对于我的情况来说,它每次都会匹配,即使没有给出'0
。
谢谢你的帮助!
您可以尝试以下模式:
@"^(?:[^'']+|''(?!0))+"
换句话说:除反斜杠或后面没有0的反斜杠之外的所有字符
我喜欢
@"^((?!''0).)*"
因为使用任意字符串都很容易实现。基本技巧是负前瞻,它断言从这一点开始的字符串与内部的正则表达式。我们在后面加了一个通配符,意思是"字面上任何不在字符串开头的字符。如果你的字符串应该更改,这是一个简单的更新-只是
@"^((?!--STRING--).)*)"
只要你能正确地逃脱那根绳子。见鬼,使用这种模式,您只是生成任何分隔符字符串的regex_escape
函数。
额外的好处:当字符串以分隔符开头时,使用*而不是+将返回一个空字符串作为有效匹配。