我已经搜索了几个小时并且已经尝试了很多不同的模式 - 我不想用regex实现一件简单的事情,但不知何故它不会像我想要的那样做:
可能的字符串
字符串1
这是一些文本 \0"§%lfsdrlsrblabla\0\0\0}dfglpdfgl
字符串2
这是一些文字
字符串3
这是一些文本 \0
期望的比赛/结果
这是一些文字
我只是想匹配所有内容-直到和除了-导致\0只有 1 个匹配。(之前的所有内容\0)对我来说
重要的是,它每次都会匹配,即使\0没有给出。
谢谢你的帮助!
你可以试试这个模式:
@"^(?:[^\\]+|\\(?!0))+"
换句话说:除了反斜杠或反斜杠后面不跟 0 的所有字符
我喜欢
@"^((?!\\0).)*"
因为它很容易用任意字符串实现。基本技巧是负前瞻,它断言从此时开始的字符串与内部的正则表达式不匹配。我们在后面加上一个通配符来表示“字面上任何不在我的字符串开头的字符。如果你的字符串应该改变,这是一个简单的更新 - 只是
@"^((?!--STRING--).)*)"
只要您正确转义该字符串。哎呀,使用这种模式,您只是regex_escape生成任何分隔符字符串的函数。
奖励:当您的字符串以分隔符开头时,使用 * 而不是 + 将返回一个空白字符串作为有效匹配。