大多数编程语言都有用于正则表达式搜索和替换的api。根据我的经验,apis可能非常笨重,可能是由于可用的操作数量和效率考虑因素。
如果你要实现api,你会模仿哪一个?
特别感兴趣的是api的方法和对象,还有regexp方言和对任何标准的遵守。
答案 0 :(得分:3)
如果你模仿一个API,它就会像原版一样笨拙(如果不是更多的话)。我不知道你得到了什么。如果您真的担心丢失100 KB到正则表达式API,您应该只实现一个不像大型子集的简约子集。检查是否有任何API配置以禁用您不需要的功能。
答案 1 :(得分:2)
我认为Lua pattern matching API是一个很好的模拟API。它具有极好的功能与简单的平衡。并且有一个辉煌的设计选择:正则表达式的转义字符与字符串文字的转义字符不同 - 所以没有反斜杠地狱。
如果我要向Lua API添加一个东西,那就是or-patterns。
答案 2 :(得分:0)
实际上已经实现了一个完整的正则表达式引擎(在我公司的产品内部使用,如RegexBuddy)和一个基于PCRE的公共“API”(Delphi的TPerlRegEx组件),我建议不要太担心模仿这个或那个,而是专注于你的正则表达式库将用于什么。不幸的是,除了提到效率之外,你没有说太多。正确开发的库不必因为它具有更多可用功能而效率低下。例如。 PCRE提供了功能丰富的正则表达风格和出色的性能,但它周围有一组有限的库功能(例如,没有搜索和替换)。但是添加更多的库功能(例如搜索和替换)不会使PCRE变慢,因为未使用的调用甚至不必链接到最终的.exe。
没有正则表达式标准。只有经常以微妙方式标榜的惯例。如果“标准”很重要,只需使用一个流行的正则表达式库,即使它不是完美的。
如果你想要一些现成的简约,请挖掘一下Henry Spencer的regex.c副本,它实现了POSIX正则表达式。