将此if语句翻译为regex

时间:2011-06-27 21:24:12

标签: regex regex-negation

我必须将以下if语句转换为正则表达式,以便我们可以在整个字符串中使用它

if (buffer[i] < 32 && !(buffer[i] == '\t' || buffer[i] == '\r' || buffer[i] == '\n'))
    buffer[i] = ' ';

我这样做了

return Regex.Replace(base.ReadLine(), "[\0-\x08\x0B\x0C\x0E-\x1F]", " ");

但是我不喜欢它的样子,在正则表达式中有没有办法在if语句中做同样的事情? Basicly

[\0-\x1f]~[\t\r\b]

~代表“排除以下”的东西(它不一定是这个语法,我只是想知道是否有这样的东西?)

3 个答案:

答案 0 :(得分:1)

看看here - 它谈到了正则表达式的否定。我不确定它是否可以直接帮助你,但它是我得到的最好的。

答案 1 :(得分:1)

如果您不喜欢正则表达式的外观,可以使用/(?![\t\r\n])[\x00-\x1F]/之类的内容。第一部分(?![\t\r\n])表示如果下一个字符与[\t\r\n]匹配则失败,然后第二部分[\x00-\x1F]表示匹配任何字符&lt; = 0x1F。

答案 2 :(得分:0)

要取消某些内容,请使用[ ^ \ t \ r \ b]。你也可以尝试negative lookbehinds,但前者更简单恕我直言。