web-dev-qa-db-ja.com

「スペースを占める目に見えない空白文字」とは何ですか

正規表現を使用してUnicode文字を検索できます。 Jan GoyvaertsのWebサイト 意味がわからない正規表現を見つけました:

\p{Zs}または\p{Space_Separator}:表示されないが、スペースを占める空白文字

だから私はこれを正しく理解したのだろうか:a Whitespace Character

  • 2つの単語、列、行などの間の「空の」スペースです。
  • 白紙の⁄画面以外は何も表示されない
  • それを通過した場所が文字、記号、同等のもので占有できない限り、それは「スペースを占有します」

これによると、私は次の質問に行きました:

  • あります 'visible空白文字'
  • 空白文字を使用できますか? 'スペースを取りません'

これは定義されているものとは正反対です。どちらも完全に理にかなっていますが、視点によっては、どちらも同じように説明できます。白紙/画面以外に何も表示されていないため、空のスペースが表示されますが、何も表示されないため、表示されません。この時点で、私は哲学との境界を感じます。それは、対応するものよりも無の量をどのように測定するかなどです。

3
erch

いくつかの古典的なASCII非表示の空白文字は次のとおりです。

  • タブ : \t
  • 改行:\n
  • キャリッジリターン : \r
  • フォームフィード:\f
  • 垂直タブ:\v

これらはすべて、コンピューターによって文字として扱われ、人間には空白として表示されます。

他の見えない文字は次のとおりです

  • 可聴ベル:\a
  • バックスペース:\b

同様にfrostschutzによって与えられたウィキペディアの記事の長いリスト。

1
terdon

PCREソーステストスイートから:

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

つまり...少なくとも、スペース、ノーブレークスペース、オガム文字のスペースマーク、モンゴルの母音区切り文字、en quad、em quadが含まれていますか?

Python 3 using regex https://pypi.python.org/pypi/regex (standard 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)

1
frostschutz