回答編集履歴

2 typo修正

think49

think49 score 16049

2017/09/09 13:49  投稿

### 返答
> つまり\xは、0x20の空白は認識するけれどもここの頁に記述してあるような空白たちは認識しないということであっておりますか。
違います(後述参照)。
> なぜphpのパターン修飾子である\xは、ASCIIの空白にしか認識しないのでしょうか。
「なぜ」にはどういう意図が含まれているのでしょうか。
aaaaaaaaさんとしては、「`\x20` だけ認識するとこんな正規表現を書く場合に不便なはずで存在理由が分からない」など、何かしらの考えがあっての質問だと思いますが、その考えが見えてきません。
**私はこれこれこういう理屈からこう思うのですが、なぜhogehogeの仕様になっているのでしょうか**」のように、自分の考えを示すようにすると、aaaaaaaaさんの意図がより伝わりやすくなると思います。
(端的にはmomon-gaさんが回答されている「仕様だから」も間違ってはいないと私は思いますが、aaaaaaaaさんの言葉が足りなくて質問の意図が正確に伝わっていないように思います。)
### パターン修飾子 x (PCRE_EXTENDED)
http://php.net/manual/ja/reference.pcre.pattern.modifiers.php では次のように書かれています。
> x (PCRE_EXTENDED)
> この修飾子を設定すると、エスケープするか 文字クラスの内部を除き、 パターンの空白文字は完全に無視されます。 文字クラスの外にあって、かつエスケープされていない # と次の改行文字の間の文字も無視されます。 この動作は、Perl の /x 修飾子と同じであり、複雑なパターンの内部に コメントを記述することが可能となります。 しかし、この修飾子は、データ文字にのみ適用されることに注意 してください。空白文字をパターンの特殊文字の並びの中、 例えば条件付きサブパターン (?( の内部に置くことはできません。
従って、半角スペース (`\x20`)も無視されるようです。
想定される用途は**正規表現文字列の中にコメントを入れること**です。
Re: aaaaaaaaさん
1 markdown修正

think49

think49 score 16049

2017/09/09 13:48  投稿

### 返答
> つまり\xは、0x20の空白は認識するけれどもここの頁に記述してあるような空白たちは認識しないということであっておりますか。
違います(後述参照)。
> なぜphpのパターン修飾子である\xは、ASCIIの空白にしか認識しないのでしょうか。
「なぜ」にはどういう意図が含まれているのでしょうか。
aaaaaaaaさんとしては、「`\x20` だけ認識するとこんな正規表現を書く場合に不便なはずで存在理由が分からない」など、何かしらの考えがあっての質問だと思いますが、その考えが見えてきません。
**私はこれこれこういう理屈からこう思うのですが、なぜhogehogeの仕様になっているのでしょうか*}*」のように、自分の考えを示すようにすると、aaaaaaaaさんの意図がより伝わりやすくなると思います。
**私はこれこれこういう理屈からこう思うのですが、なぜhogehogeの仕様になっているのでしょうか**」のように、自分の考えを示すようにすると、aaaaaaaaさんの意図がより伝わりやすくなると思います。
(端的にはmomon-gaさんが回答されている「仕様だから」も間違ってはいないと私は思いますが、aaaaaaaaさんの言葉が足りなくて質問の意図が正確に伝わっていないように思います。)
### パターン修飾子 x (PCRE_EXTENDED)
http://php.net/manual/ja/reference.pcre.pattern.modifiers.php では次のように書かれています。
> x (PCRE_EXTENDED)
> この修飾子を設定すると、エスケープするか 文字クラスの内部を除き、 パターンの空白文字は完全に無視されます。 文字クラスの外にあって、かつエスケープされていない # と次の改行文字の間の文字も無視されます。 この動作は、Perl の /x 修飾子と同じであり、複雑なパターンの内部に コメントを記述することが可能となります。 しかし、この修飾子は、データ文字にのみ適用されることに注意 してください。空白文字をパターンの特殊文字の並びの中、 例えば条件付きサブパターン (?( の内部に置くことはできません。
従って、半角スペース (`\x20`)も無視されるようです。
想定される用途は**正規表現文字列の中にコメントを入れること**です。
(PHPマニュアルは公式情報ですので、PHPの内容はまず、PHPマニュアルはを確認すると良いと思います。)
Re: aaaaaaaaさん

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る