2

我正在尝试创建一个匹配具有以下条件的单词的正则表达式:

  • 匹配可以包含以下字符的单词:æøå 和数字。
  • 如果一个单词包含以下任何字符,则它是无效的:
    + - & | ! ( ) { } [ ] ^ " ~ * ? : \

因此,例如,这些词是可以的:

testæøå
test12
12test

但这些应该失败:

t+
st 测试

4

2 回答 2

1

怎么样[^+\-|!(){}\[\]\^"~*?:\\]+。这将匹配不包含您要排除的字符的任何内容。您必须检查我是否正确地在封闭[]

于 2012-12-14T21:55:55.627 回答
1

万一您不知道,C# 中的正则表达式比字符串操作慢得多:C# 中的正则 表达式
然而,如果您使用 Regex.Compiled 对其进行优化,则可以提高速度。但是,这确实会导致您的程序启动速度变慢。如果这将是任何基于 Web 的(C#/Silverlight),我强烈建议使用字符串操作和搜索正则表达式,否则对于使用该页面的任何人来说,这将是非常慢的。

您可以轻松地匹配字符的 Unicode 或 ASCII 代码并从那里接受/拒绝单词,从而获得更好的性能。

如果您决定使用正则表达式,请考虑使用 Perl 或其他脚本语言,它们使用正则表达式进行字符串操作要快得多。

于 2012-12-14T22:06:49.003 回答