跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 有没有什么“跨语言”的正则表达式(RegEx)实现?
未分類
18 3 月 2021

有没有什么“跨语言”的正则表达式(RegEx)实现?

有没有什么“跨语言”的正则表达式(RegEx)实现?

資深大佬 : AndyAO 9

正则表达式在各种语言上的实现有很多的区别,所以在使用的过程中常常要注意[1],有的时候需要花挺长时间才能够移植过去。

有没有什么,比较出名的,跨语言的正则表达式实现?

比较,出名的语言应该都支持,例如 Python,Java,C#,JavaScript,Go 等

如果有的话就能够实现一处编写处处运行了。

背景: 在学习的时候,刚开始用的是 PowerShell,发现有很多的表达式在上面运行是有问题的,为了不在这上面浪费时间,最后还是选了和这本书相同的 Python,突然觉得也许会有比较出名的跨平台的实现,如果真是那样的话,那么就好多了,之后用的时候就可以从自己已经写好的表达式中直接复制粘贴,而不用提心吊胆。去谷歌上搜索Cross platform Cross language RegEx,没看到啥有用的信息,所以准备来问问,也许在 V2EX 有人知道。

[1]:《正则指引》

要知道,一种语言下的正则表达式往往并不能直接套用到另一种语言中

…

本书还涵盖了.NET 、Java 、JavaScript 、PHP 、Python 、Ruby 、Objective-C 、Golang 等常用语言,为每种语言专门撰写相关内容,不但详细介绍了语言中正则表达式的用法,更辨析了版本之间的细微差异,既可以作为专门学习的教材,也可以成为有用的参考手册。

大佬有話說 (15)

  • 資深大佬 : acmore

    ANTLR 可以满足,但有些大材小用,写配置也有些繁复。

  • 資深大佬 : agagega

    很多语言的正则都是 pcre 兼容的

  • 資深大佬 : guyeu

    你列的这些语言支持的都是 PCRE 标准的正则吧。。

  • 資深大佬 : hxndg

    应该不能把,反正我记得是各种流派都有的

  • 資深大佬 : missdeer

    PCRE 吧,很多语言有兼容或绑定

  • 主 資深大佬 : AndyAO

    它们并不是兼容的,这个需要特别强调。

  • 資深大佬 : mcfog

    https://github.com/google/re2

    RE2’s native language is C++.

    The Python wrapper is at https://github.com/google/re2/tree/abseil/python
    and on PyPI ( https://pypi.org/project/google-re2/).

    A C wrapper is at https://github.com/marcomaggi/cre2/.
    An Erlang wrapper is at https://github.com/dukesoferl/re2/ and on Hex (hex.pm).
    An Inferno wrapper is at https://github.com/powerman/inferno-re2/.
    A Node.js wrapper is at https://github.com/uhop/node-re2/ and on NPM (npmjs.com).
    An OCaml wrapper is at https://github.com/janestreet/re2/ and on OPAM (opam.ocaml.org).
    A Perl wrapper is at https://github.com/dgl/re-engine-RE2/ and on CPAN (cpan.org).
    An R wrapper is at https://github.com/qinwf/re2r/ and on CRAN (cran.r-project.org).
    A Ruby wrapper is at https://github.com/mudge/re2/ and on RubyGems (rubygems.org).
    A WebAssembly wrapper is at https://github.com/google/re2-wasm/ and on NPM (npmjs.com).

    另外 Go 标准库的正则也是参照 re2 的

  • 資深大佬 : jtsai

    我怎么感觉正则在所有语言里都差不多

  • 主 資深大佬 : AndyAO

    刚刚看了上面几位说都是这些语言内置的 RegEx 是兼容的,而这显然不可能,如果是这样的话,那么书就不会花这么多时间来特别的说明,RegexBuddy4 这种专门的工具也不会有各种语言的选项设置。

    但`PCRE`这个信息挺好,在查询相关的信息,也许这个关键词可以搜出很多能完全兼容的类库。

  • 主 資深大佬 : AndyAO

    感觉差不多是很正常的,因为「多」和「少」这些词都很模糊,这个帖子讨论的就是区别。

  • 主 資深大佬 : AndyAO

    搜索 Python PCRE 能找到宣称更好兼容的库,但是下载量少的可怜

    python-pcre · PyPI

    https://pypi.org/project/python-pcre

  • 主 資深大佬 : AndyAO

    从这里来看 Python 中有个模块就叫 RegEx 提供了很多官方 re 中没有的功能。
    本来以为会有人统一的去做这样的模块,现在看来也许并不是这样的,还是有的,只是名字和维护者不相同。

    How can I use PCRE regexes from a python script?
    https://stackoverflow.com/a/23212557

  • 主 資深大佬 : AndyAO

    mcfog 提供了很好的信息,原来 Python 的 re 是来自 C++ 的 re2,而且有大量的语言也用了这个实现,看来 re2 就是我想找的东西之一,在 .NET 上也可以用。

  • 主 資深大佬 : AndyAO

    啊,感觉好像理解错了 Python 的 Re2 是在这里 ,README 上没说内置的是↓

    [google-re2 · PyPI]( https://pypi.org/project/google-re2/)

  • 資深大佬 : newmlp

    搞个 CC++语言的库就行了,应该没有语言不支持 CC++库吧

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具