如何确保正则表达式中的\ w将国民字母视为正常字母?红宝石1.9.3正则表达式utf8 w带重音符
'ein grüner Hund'.scan(/\S+/u)
[ “EIN”, “格鲁纳”, “洪德”]
它正确地扫描 “ü” 非空白字符。
'ein grüner Hund'.scan(/\w+/u)
[ “EIN”, “克”, “净入学率”, “洪德”]
如何获得 “ü” 吗?
我需要的解决方案不仅适用于德语,法语和波兰语字符也应该工作。
如何确保正则表达式中的\ w将国民字母视为正常字母?红宝石1.9.3正则表达式utf8 w带重音符
'ein grüner Hund'.scan(/\S+/u)
[ “EIN”, “格鲁纳”, “洪德”]
它正确地扫描 “ü” 非空白字符。
'ein grüner Hund'.scan(/\w+/u)
[ “EIN”, “克”, “净入学率”, “洪德”]
如何获得 “ü” 吗?
我需要的解决方案不仅适用于德语,法语和波兰语字符也应该工作。
\w
将适用于字母或数字或下划线。您的正则表达式引擎可能会将单一Unicode代码点视为单个字符。在这种情况下,ü将不会匹配为单个字符,因为它是多个代码点字符(编码为两个代码点)。对于匹配多个代码点字符,也可以使用匹配单个Unicode代码字符的\X
,无论是单个代码点还是多个代码点。
检查this了解更多信息。
我不确定Ruby是否支持\X
。否则可以使用\p{L}\p{M}*
,它与一个字母和口音匹配。
1为“在这种情况下,ü将不会被作为匹配,因为它是多个码点的字符(编码为两个代码点)的单个字符” – astropanic 2013-02-13 12:52:26
thx,效果很好 – astropanic 2013-02-13 12:52:44