正则表达式不匹配制表符、回车和方括号

4

我需要一个正则表达式来不匹配制表符、回车和方括号。(C#)

4个回答

5

尝试:

[^\][\t\r]
  • [] - 字符类
  • ^ - 取反字符类
  • \] - 将 ] 转义,因为在字符类内部它是元字符
  • [ - 不需要转义 [,因为在 [] 内部它不是元字符
  • \t - 制表符
  • \r - 回车符

我觉得你在符号类中漏掉了 \n - Ivan Nevostruev
OP没有提到换行符。 - Douglas Leeder

1

应该是:

[^\t\r\[\]]

或者针对整个字符串:

^[^\t\r\[\]]*$

在字符类中,您无需转义 [。 - codaddict
嗯,确实如此。但在这种情况下,可能会更少令人困惑。 - Kobi
同意:无论哪种方式都很丑,但使用反斜线会稍微清晰一些。而且,在某些版本中,确实需要转义[字符。 - Alan Moore

0
#!/usr/bin/perl

use strict; use warnings;

my ($s) = @ARGV;

if ( $s =~ /^[^\r\t\[\]]*\z/ ) {
    print "$s contains no carriage returns, tabs or square brackets\n";
}

0
[\w]+

将匹配任何单词字符(字母数字和下划线)。


那么其他不是制表符、回车或方括号的所有字符呢? - Alan Moore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接