書こう!正規表現
vol.3 ()
() (丸括弧)
()
1. グルーピング
2. 後方参照
1. グルーピング
foo{1,}
foo, fooo, foooo, ...
(foo){1,}
foo, foofoo, foofoofoo, ...
他のメタ文字の対象範囲をグルーピングする
1. グルーピング
foo|barbaz
foo, barbaz
(foo|bar)baz
foobaz, barbaz
他のメタ文字の対象範囲をグルーピングする
ちなみに
gr[ea]y == gr(e|a)y
grey, gray
()と|による選択肢は文字クラスと少し似ている
ちなみに
gr(e|a|eed)y
grey, gray, greedy
gr[eaeed]y
grey, gray, grdy
相違点1:
文字クラスは全体で高々1文字とマッチする
選択肢にそのような制限はない
ちなみに
gr[(e|a|eed)]y
grey, gray, grdy, gr(y, gr)y, gr|y
gr([ea]|eed)y
grey, gray, greedy
相違点2:
文字クラス内部ではメタ文字の意味が(失われる|変わる)
選択肢にそのような特記事項はない
ちなみに
[0-9]{4}.[0-9]{4}.[0-9]{4}.[0-9]{4}
(0|1|2|3|4|5|6|7|8|9){4}.
(0|1|2|3|4|5|6|7|8|9){4}.
(0|1|2|3|4|5|6|7|8|9){4}.
(0|1|2|3|4|5|6|7|8|9){4}
相違点2:
文字クラス内部ではメタ文字の意味が(失われる|変わる)
選択肢にそのような特記事項はない
ちなみに
"["^]"
# お手上げ
相違点2:
文字クラス内部ではメタ文字の意味が(失われる|変わる)
選択肢にそのような特記事項はない
2. 後方参照
<[ip]>.*</[ip]>
<i>foo</i>, <p>bar</p>,
<p>foo</i>, <i>bar</p>
<([ip])>.*</1>
<i>foo</i>, <p>bar</p>
NOT <i>foo</p>, <p>bar</i>
囲んだ範囲を1(一般に)で参照する
唐突なQ&A
Q. 後方参照は何がどう後方なのか
むしろ前の方の()を参照しているのでは?
唐突なQ&A
Q. 後方参照は何がどう後方なのか
むしろ前の方の()を参照しているのでは?
A. Backreferenceの訳語なので「後方(back)」というのは
「進行方向に対して後方」ということで、
文字列を読み進めている最中に振り返って(戻って)
参照しているイメージ

書こう!正規表現 vol.3 ()