Ruby regex和Python regex之间有什么真正的区别吗?
我找不到两者之间的任何区别,但可能遗漏了一些东西。
发布于 2011-04-15 11:29:24
最后一次我检查时,他们在Unicode支持上有很大的不同。Ruby在1.9中至少有一些非常有限的Unicode支持。我相信现在可能已经支持一两个Unicode属性了。也许一般的类别和脚本就是我想要的两个。
同时,Python对Unicode的支持越来越少。Python似乎确实可以满足UTS#18对Unicode Regular Expressions的RL1.2a "Compatability Properties"要求。
也就是说,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和puython1级都不兼容。Unicode的其他非常重要的方面包括UAX#15、UAX#14、UTS#18、UAX#11、UAX#29,当然还有至关重要的UAX#44。我知道,Python至少有几个这样的库。我不知道它们是不是标准的。
但是当涉及到正则表达式支持时,嗯,除了这两个之外,还有更丰富的选择,你知道。:)
发布于 2011-04-15 11:21:59
我喜欢Ruby中受Perl启发的正则表达式的/pattern/语法。Python的模式(“re.compile”)对我来说并不是很优雅。Ruby中的语法糖和正则表达式是Python中独立的re模块的事实,使我在使用正则表达式时倾向于Ruby。
除此之外,从常规正则表达式编程的角度来看,我看不出有什么不同。这两种语言都有相当全面且基本相似的RE支持。可能存在性能差异( Python传统上具有更好的性能),而且Python对unicode正则表达式的支持也更强。
发布于 2011-04-16 14:31:32
如果问题只是关于正则表达式:两者都不是。使用Perl。
您应该根据您正在尝试解决的其他非正则表达式问题和您所在领域附近的社区支持,在这些语言之间进行选择。
如果您真的只选择一种基于正则表达式支持的语言--选择Perl...
https://stackoverflow.com/questions/5671653
复制相似问题