Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式在c#中是如何工作的?_C#_Regex_Performance - Fatal编程技术网

正则表达式在c#中是如何工作的?

正则表达式在c#中是如何工作的?,c#,regex,performance,C#,Regex,Performance,我想知道一个非常严格的规则是如何影响c#中正则表达式的性能的 e、 g如果我期望一个字符串(我将从某处读取)只包含[a-zA-z0-9],但同时我确信,给我字符串的那个将始终返回一个具有此规则的字符串。因此,在这种情况下,使用“.”而不是a-zA-Z0-9是否会对性能产生任何影响 这两者的工作方式有什么不同 如果我期望一个字符串(我将从某处读取)只包含[a-zA-z0-9],但同时我确信,给我该字符串的那个将始终返回一个具有此规则的字符串 你不能肯定这一点。你知道这对我意味着什么。你的代码可以被

我想知道一个非常严格的规则是如何影响c#中正则表达式的性能的

e、 g如果我期望一个字符串(我将从某处读取)只包含[a-zA-z0-9],但同时我确信,给我字符串的那个将始终返回一个具有此规则的字符串。因此,在这种情况下,使用“.”而不是a-zA-Z0-9是否会对性能产生任何影响

这两者的工作方式有什么不同

如果我期望一个字符串(我将从某处读取)只包含[a-zA-z0-9],但同时我确信,给我该字符串的那个将始终返回一个具有此规则的字符串

你不能肯定这一点。你知道这对我意味着什么。你的代码可以被别人使用,你的程序可以被别人输入。编写防御代码。总是。没有借口

因此,在这种情况下,使用“.”而不是a-zA-Z0-9是否会对性能产生任何影响


忽略上面的陈述,如果你确信输入符合你的期望,你就不必验证它们是否符合你的期望。您必须有其他约束,例如“字符串的长度为X或更大”,您只需检查
string.length
和类似的方法即可。如果您想知道这两种方法中哪一种更快,请尝试两种方法并测量结果,然后您就会知道。结果如何?赛马?:)@EricLippert-下一个问题:在C#中,如何衡量正则表达式的性能?请查看此链接。有一个很好的例子将IndexOf与regex进行了比较。@chaosption:Performance总是在影响用户的上下文中进行的。如果它不影响用户,那么你为什么会在意呢?因此,一种方法是找到一个用户,向他们展示两种方式的性能,并询问他们在一种情况下性能是否可以接受,而在另一种情况下性能是否可以接受。使用用户作为您的测量设备,因为他们的满意度是您所追求的。