Ruby 1.9.3正则表达式utf8\w重音字符
如何确保Regexp中的\w将国家字母与普通字母一样处理Ruby 1.9.3正则表达式utf8\w重音字符,ruby,regex,encoding,utf-8,Ruby,Regex,Encoding,Utf 8,如何确保Regexp中的\w将国家字母与普通字母一样处理 'ein grüner Hund'.scan(/\S+/u) [“ein”、“grüner”、“Hund”] 它将“ü”作为非空白字符正确扫描 'ein grüner Hund'.scan(/\w+/u) [“ein”、“gr”、“ner”、“Hund”] 怎么也能得到“你”呢 我需要一个不仅适用于德语、法语和波兰语字符的解决方案。字母、数字或下划线也适用于\w。您的正则表达式引擎可能将单个Unicode代码点视为单个字符。在这种情况
'ein grüner Hund'.scan(/\S+/u)
[“ein”、“grüner”、“Hund”]
它将“ü”作为非空白字符正确扫描
'ein grüner Hund'.scan(/\w+/u)
[“ein”、“gr”、“ner”、“Hund”]
怎么也能得到“你”呢
我需要一个不仅适用于德语、法语和波兰语字符的解决方案。字母、数字或下划线也适用于
\w
。您的正则表达式引擎可能将单个Unicode代码点视为单个字符。在这种情况下,u将不会作为单个字符进行匹配,因为它是多个代码点字符(编码为两个代码点)。要同时匹配多个代码点字符,请使用\X
来匹配单个unicode字符集,无论它是单个代码点还是多个代码点
查看更多信息
我不确定Ruby是否支持
\X
。否则可以使用与字母和重音匹配的\p{L}\p{M}*
。\w
适用于字母、数字或下划线。您的正则表达式引擎可能将单个Unicode代码点视为单个字符。在这种情况下,u将不会作为单个字符进行匹配,因为它是多个代码点字符(编码为两个代码点)。要同时匹配多个代码点字符,请使用\X
来匹配单个unicode字符集,无论它是单个代码点还是多个代码点
查看更多信息
我不确定Ruby是否支持\X
。否则可以使用\p{L}\p{M}*
,它匹配字母和重音。试试看
'ein grüner Hund'。扫描(/[:word:]+/u)
试试看
'ein grüner Hund'。扫描(/[:word:]+/u)
+1表示“在这种情况下,由于u是多代码点字符(编码为两个代码点),所以u不会作为单个字符进行匹配”+1表示“在这种情况下,由于u是多代码点字符(编码为两个代码点),所以u不会作为单个字符进行匹配”