我有一个像这样的字符串:
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/