我正在尝试创建一个匹配具有以下条件的单词的正则表达式:
- 匹配可以包含以下字符的单词:æøå 和数字。
- 如果一个单词包含以下任何字符,则它是无效的:
+ - & | ! ( ) { } [ ] ^ " ~ * ? : \
因此,例如,这些词是可以的:
testæøå
test12
12test
但这些应该失败:
t+
st 测试
怎么样[^+\-|!(){}\[\]\^"~*?:\\]+
。这将匹配不包含您要排除的字符的任何内容。您必须检查我是否正确地在封闭[
和]
万一您不知道,C# 中的正则表达式比字符串操作慢得多:C# 中的正则
表达式
然而,如果您使用 Regex.Compiled 对其进行优化,则可以提高速度。但是,这确实会导致您的程序启动速度变慢。如果这将是任何基于 Web 的(C#/Silverlight),我强烈建议使用字符串操作和搜索正则表达式,否则对于使用该页面的任何人来说,这将是非常慢的。
您可以轻松地匹配字符的 Unicode 或 ASCII 代码并从那里接受/拒绝单词,从而获得更好的性能。
如果您决定使用正则表达式,请考虑使用 Perl 或其他脚本语言,它们使用正则表达式进行字符串操作要快得多。