2

我已经搜索了几个小时并且已经尝试了很多不同的模式 - 我不想用regex实现一件简单的事情,但不知何故它不会像我想要的那样做:

可能的字符串

字符串1

这是一些文本 \0"§%lfsdrlsrblabla\0\0\0}dfglpdfgl

字符串2

这是一些文字

字符串3

这是一些文本 \0

期望的比赛/结果

这是一些文字

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

谢谢你的帮助!

4

2 回答 2

2

你可以试试这个模式:

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

换句话说:除了反斜杠或反斜杠后面不跟 0 的所有字符

于 2013-07-24T17:22:19.083 回答
1

我喜欢

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

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

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

只要您正确转义该字符串。哎呀,使用这种模式,您只是regex_escape生成任何分隔符字符串的函数。

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

于 2013-07-24T17:35:53.730 回答