我必须将以下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]
~
代表“排除以下”的东西(它不一定是这个语法,我只是想知道是否有这样的东西?)
答案 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,但前者更简单恕我直言。