dlclark / regexp2

A full-featured regex engine in pure Go based on the .NET engine
MIT License
997 stars 84 forks source link

Can regexp2 provide the same APIs adapt to std.regexp? #42

Open vipally opened 3 years ago

vipally commented 3 years ago

I wander if regexp2 can provide the same APIs adapt to std.regexp. So that I can change my rely between regexp2 & std.regexp easily by just change the expr text only.

dlclark commented 3 years ago

I’m assuming gostd.regexp is the go standard library regexp package.

This package isn’t designed to be a drop-in replacement for the standard library.

At first blush a conversation layer doesn’t seem too difficult so it seems like a project that requires swapping between them could write a normalization layer.

Have you tried writing this layer yourself and run into problems? Are there specific functions or concepts from regexp you want that aren’t present in regexp2?

vipally commented 3 years ago

https://gitee.com/gxlb/gogp/blob/dev_gt/syntax.go#L52 I am doing some heavy regexp processing, what need back-reference syntax from regexp library, which is not supported by std.regexp. I found regexp2 meet all what I need.

I have try to export this APIs at https://gitee.com/gxlb/gogp/blob/dev_gt/vendor/github.com/dlclark/regexp2/regexp_api.go But failed today, I'll try latter. It will be greatfull if regexp2 directly adapt all APIs from std.regexp library.

vipally commented 3 years ago

https://gitee.com/gxlb/gogp/blob/dev_gt/vendor/github.com/dlclark/regexp2/std_regexp_api.go I have sucessfully replaced std.regexp with regexp2. When I finish adapt other unused APIs, may I put a PR to regexp2 to compatibility with std.regexp APIs?

dlclark commented 3 years ago

Sure! Be sure to document the compatibility goal in the README and include tests.

vipally commented 3 years ago

Here is something that I want to do on regexp2 next:

  1. [x] Add compatibility with std.regexp APIs
  2. [ ] Add coverage test cases
  3. [ ] Add examples of APIs usage