Ruby Regex与Python Regex

Tim*_*m O 7 ruby python regex

Ruby正则表达式和Python正则表达式之间是否有任何真正的区别?

我一直无法找到两者的任何差异,但可能错过了一些东西.

tch*_*ist 8

我最后一次检查时,他们的Unicode支持差异很大.1.9中的Ruby至少有一些非常有限的Unicode支持.我相信现在可能支持一个或两个Unicode属性.可能是一般类别,也许是脚本是我正在考虑的两个.

Python同时支持越来越少的Unicode.Python确实可以满足UTS#18对Unicode正则表达式RL1.2a"兼容性属性"的要求.

也就是说,Matthew Barnett(mrab)有一个非常好的Python库,它最终为Python正则表达式添加了几个Unicode属性.他支持两个最重要的:一般类别和脚本属性.它还有一些其他有趣的功能.值得一些好的宣传.

我不认为Ruby或Python都支持Unicode非常好,尽管每天都会有越来越多的人完成.但是,特别是,它们都不符合上面引用的Unicode正则表达式的准系统级别1要求.例如,RL1.2要求至少支持11个属性:General_Category, Script, Alphabetic, Uppercase, Lowercase, White_Space, Noncharacter_Code_Point, Default_Ignorable_Code_Point, ANY, ASCII,ASSIGNED.

我认为Python只允许你进入其中一些,并且只能以迂回的方式.当然,除了这11个之外,还有许多其他的属性.

当你在寻找Unicode支持时,当然不仅仅是正则表达式上的UTS#10,尽管这是对这个问题最重要的一个,而且Ruby和Puython都不符合Level 1.Unicode的其他非常重要的方面包括UAX#15,UAX#14,UTS#18,UAX#11,UAX#29,当然还有关键的UAX#44.我知道Python至少有几个库.我不知道他们是标准的.

但是,当涉及到正则表达式的支持,嗯,还有不仅仅是这两个,你知道的更丰富的选择.:)


man*_*lds 5

对于正则表达式,我喜欢Ruby中的/ pattern/syntax,灵感来自Perl.Python的re.compile("模式")对我来说并不是很优雅.Ruby中的合成糖以及正则表达式是Python中单独的re模块这一事实使我在使用正则表达式时倾向于使用Ruby.

除此之外,我没有看到与正常的正则表达式编程视角有太大区别.这两种语言都具有相当全面且大部分类似的RE支持.可能存在性能差异(Python传统上具有更好的性能)并且Python具有更大的unicode正则表达式支持.

  • 我非常同意你的观点,即将正则表达式与核心语言紧密结合而不是固定在库的一边,这在可用性上有很大的不同. (4认同)