正規表現のAND
- (?=条件1)(?=条件2)を使えれば使え. perlとjavaは使えるらしい.
- (?= )は対象文字列を次にシフトせず検査だけして, 一致しても保存しないものらしい.
- 否定の(?!条件)も同じ.
- /foo(?!bar)/はfooで始まる文字列のうちfoobarではないものがマッチするが, /(?!foo)bar/はfooに続かないbarではないらしい.
- foobarは最初の(?!foo)でマッチせず. foobarを1文字シフトする.
- oobarは最初の(?!foo)はoobなので通過する. (?! )はoobarを1文字シフトしないのでそのまま頭のoの検査に入るが, oとbが一致しない. oobarを1文字シフトする.
- obarは最初の(?!foo)は通過するが, 同じくoとbが一致しない. obarを1文字シフトする.
- barは最初の(?!foo)を通過し, そのままbの検査に入る. b,a,rが一致するので, 結局foobarは/(?!foo)bar/にマッチしている.
- /(!
- foobarは頭の(!
- oobarのoobは(?
- obar, obaは通過, rとbが一致しない.
- bar, (!