Ruby 1.9.3正则表达式utf8\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代码点视为单个字符。在这种情况

如何确保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代码点视为单个字符。在这种情况下,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不会作为单个字符进行匹配”