什么是“占用空间的不可见空白字符”

什么是“占用空间的不可见空白字符”

可以使用正则表达式查找 Unicode 字符。在扬·戈伊瓦茨网站我发现了一个我不明白其含义的正则表达式:

\p{Zs}or \p{Space_Separator}:不可见但占用空间的空白字符

所以我想知道我是否做对了:aWhitespace Character

  • 是两个单词、列、行等之间的“空白”空间
  • 它是“隐形的”,因为它只包含白纸/屏幕
  • 它“占据空间”,因为它所占据的位置不能被字母、符号或任何类似的东西占据

据此我得出以下结论问题:

  • 在那儿 '可见的空白字符'
  • 可以是空白字符 '不占用空间'

这与定义完全相反。两者都完全有道理,但两者都可以描述相同的内容,具体取决于观点:一个空白的空间是可见的,因为除了白纸/屏幕之外没有任何东西显示,但它是不可见的,因为没有什么可看的。在这一点上,我感觉到与哲学的边界:如何通过其对应物来衡量虚无的数量,等等。

答案1

一些经典的 ASCII 不可见空白字符包括:

  • 标签 :\t
  • 新队:\n
  • 回车:\r
  • 换页:\f
  • 垂直选项卡:\v

所有这些都被计算机视为字符,并对人类显示为空白。

其他不可见的字符包括

  • 响铃:\a
  • 退格键:\b

以及由frostschutz 给出的维基百科文章中的长列表。

答案2

来自 PCRE 源测试套件:

/^\p{Zs}/8
    \ \
    \x{a0}
    \x{1680}
    \x{180e}
    \x{2000}
    \x{2001}

那么...至少它包括空格、无中断空格、奥甘空格标记、蒙古元音分隔符、en 四元组、em 四元组?

根据 Python 3 使用正则表达式的 \p{Zs} 的含义https://pypi.python.org/pypi/regex(标准 Python re 不理解 \p{Zs}:

$ python3
Python 3.2.3 (default, Mar 23 2013, 23:30:23) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import regex
>>> import sys
>>> allofunicode=''.join([c for c in map(chr, range(sys.maxunicode+1))])
>>> regex.findall(r'\p{Zs}', allofunicode)
[' ', '\xa0', '\u1680', '\u180e', '\u2000', '\u2001', '\u2002', '\u2003', '\u2004', '\u2005', '\u2006', '\u2007', '\u2008', '\u2009', '\u200a', '\u202f', '\u205f', '\u3000']

(抱歉,代码很奇怪 - 我会用 Perl 来做,但我的 Perl 很生疏:P)

相关内容