Ruby Regex vs Python Regex

问题描述 投票:7回答:5

Ruby regex和Python regex之间有什么真正的区别吗?

我一直找不到两者之间的任何区别,但是可能错过了一些东西。

python ruby regex
5个回答
8
投票

我上次检查时,它们在Unicode支持方面有很大不同。 1.9中的Ruby至少具有一些非常有限的Unicode支持。我认为目前可能支持一两个Unicode属性。大概是一般类别,也许是我想到的两个脚本。

Python同时具有越来越少的Unicode支持。 Python似乎确实可以满足UTS#18对RL1.2a "Compatability Properties"Unicode Regular Expressions的要求。

就是说,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都不符合1级标准。 Unicode的其他非常重要的方面包括UAX#15,UAX#14,UTS#18,UAX#11,UAX#29,当然还有至关重要的UAX#44。我知道,Python至少有两个库。我不知道它们是标准的。

但是当涉及到正则表达式支持时,嗯,除了这两个之外,还有更多的选择。 :)


5
投票
我喜欢Ruby中的/ pattern /语法,它受Perl启发,用于正则表达式。 Python的re.compile(“ pattern”)对我来说不是很优雅。 Ruby中的语法糖以及正则表达式是Python中单独的re模块这一事实,使我在使用正则表达式时倾向于Ruby。

3
投票
如果问题仅与正则表达式有关:都没有。使用Perl。

1
投票
用于Ruby和Python的正则表达式库由两个完全独立的团队开发。即使它们现在相同(并且我不确定它们是否相同),也不能保证它们将来不会在某些时候分离。

1
投票
Ruby的Regexp#match方法等效于Python的re.search(),而不是re.match()re.search()Regexp#match在字符串中的任意位置寻找第一个匹配项。 re.match()仅在字符串的开头查找匹配项。
© www.soinside.com 2019 - 2024. All rights reserved.