可以使用正则表达式查找 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)