1

如何确保 Regexp 中的 \w 将国家字母与普通字母相同?

'ein grüner Hund'.scan(/\S+/u)

[“ein”,“grüner”,“Hund”]

它将“ü”正确扫描为非空白字符。

'ein grüner Hund'.scan(/\w+/u)

[“ein”、“gr”、“ner”、“Hund”]

如何获得“ü”?

我需要一个解决方案,不仅适用于德语、法语和波兰语字符也应该有效。

4

2 回答 2

2

\w适用于字母、数字或下划线。您的正则表达式引擎可能会将单个 Unicode 代码点视为单个字符。在这种情况下,ü不会被匹配为单个字符,因为它是多个代码点字符(编码为两个代码点)。对于匹配多个代码点字符,使用\Xwhich 匹配单个 unicode 字素,无论它是单个代码点还是多个代码点。

检查以获取更多信息。

我不确定 Ruby 是否支持\X. 否则\p{L}\p{M}*可以使用,它匹配一个字母和重音。

于 2013-02-13T11:01:22.683 回答
2

尝试

'ein grüner Hund'.scan(/[[:word:]]+/u)

文档

于 2013-02-13T11:01:36.767 回答