gpt4 book ai didi

ruby - 匹配类似空格的字符的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 00:40:51 25 4
gpt4 key购买 nike

我以为 [[:space:]] 匹配所有类似空格的字符,但“零宽度空格”是个异常(exception)。

# normal space
32.chr('UTF-8').match?(/[[:space:]]/) #=> true
# no break space
160.chr('UTF-8').match?(/[[:space:]]/) #=> true
# en space
8194.chr('UTF-8').match?(/[[:space:]]/) #=> true
# em space
8195.chr('UTF-8').match?(/[[:space:]]/) #=> true
# thin space
8201.chr('UTF-8').match?(/[[:space:]]/) #=> true
# ideographic space
12288.chr('UTF-8').match?(/[[:space:]]/) #=> true
# zero width space
8203.chr('UTF-8').match?(/[[:space:]]/) #=> false
# zero width no break space
65279.chr('UTF-8').match?(/[[:space:]]/) #=> false

如何编写匹配所有这些空格的正则表达式?

最佳答案

不幸的是,两个零宽度空格不被视为空格,而是“Other:Format”字符。

对应the specification , CtrlF200B,标题为“格式字符”。既然你想匹配 ZWSP,我看不出有什么理由不匹配所有格式字符,可以做什么:

/\p{Zs}|\p{Cf}/ =~ 65279.chr('UTF-8')
#⇒ 0

另请注意,在处理 Unicode 时,任何明确的字符枚举都是非常糟糕的主意。规范经常更改,在这种情况下,明确的字符列表将在明天早上变得过时。

一般有两种处理方法:

  • 解析联盟规范(例如 这样做是为了确保正确处理 最新 版本的 unicode,)
  • 使用通用“组”(例如 [[:space:]]\p{Zs}。)

关于ruby - 匹配类似空格的字符的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46782981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com