我有一个像这样的字符串:

I am down in the town seeing a crown="larry" with a cherry="red"


我想编写一个程序,询问用户她想要什么。如果她要求将“ larry”作为皇冠和“ red” cherry的字符串,我需要返回该字符串。

好的,我在这里简化问题。可能有很多这样的字符串,我需要解析它们并返回所有匹配的字符串。

问题:执行regexec和regcomp会更有效,还是分解字符串并执行strncmp?

PS:似乎regexec需要在内部进行某种比较,而这些设计本来会非常有效。

最佳答案

我认为strncmp()只是工作的错误工具;如果您说strstr(),则可能有讨论的余地。您不能轻易使用strncmp(),因为您必须找到一个位置进行比较。

如果使用strstr(),则将查找诸如以下的字符串:

crown="larry"
cherry="red"


如果使用正则表达式,则必须对其进行编译并运行。如果要搜索两个字符串,则有两个正则表达式,除非要编写扭曲的正则表达式。我认为,对于简单的比较,您需要按上述两种顺序使用上述两个字符串,您可能会发现strstr()的两种用法比一个或两个正则表达式要快。

不过,值得测量差异。它可能取决于strstr()的实现;有些很好。因此,请在您所关注的平台上运行测量,然后选择最适合您的平台。

关于c - regexec和regcomp比自己做strncmp更有效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6808944/

10-11 19:00