Ruby regex和Python regex之间有什么真正的区别吗?
我一直找不到两者之间的任何区别,但是可能错过了一些东西。
我上次检查时,它们在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至少有两个库。我不知道它们是标准的。
但是当涉及到正则表达式支持时,嗯,除了这两个之外,还有更多的选择。 :)
Regexp#match
方法等效于Python的re.search()
,而不是re.match()
。 re.search()
和Regexp#match
在字符串中的任意位置寻找第一个匹配项。 re.match()
仅在字符串的开头查找匹配项。