- 1 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/12/02(日) 03:02:52 ID:1l6Tk/UJ0]
- このスレは作成依頼されたフィルタを有志により作るスレッドPart8です
Proxmine - Uploader wind.prohosting.com/proxmine/cgi-bin/uploader/ Proxomitron専用Uploader proxo.hp.infoseek.co.jp/cgi-bin/sn_uploader/upload.html Proxomitron等に関するWiki abc.s65.xrea.com/prox/wiki/ Thinking Archive(仮) vird2002.s8.xrea.com/ >>2-10にいろいろと
- 891 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/24(月) 07:25:36 ID:gGfErR5e0]
- くどいようだけど、"foo(?=bar)" がマッチするのは
「"foo" と、それに続く仕切り線。どのような仕切り線かというと、その後に "bar" が続くような、仕切り線」 なのであり、決して「"foobar" にマッチする。但し、"bar" の部分はいじらないものとする」というのではない。 後者のような捉え方をしていると、検索対象文字列を探索していくポインタ("|"で表そう)が 既に "foobar|" にまで進んでいるような勘違いを起こしてしまう。 この時、ポインタはあくまで "foo|bar" にとどまっているのである。 ポインタはそこにとどまりつつ(これが「文字列を消費しない」の意味。"bar" は消費されずに残る)、 その先を見通す(これがつまり「先読み」)。 マッチングが完了した時のポインタの位置(模式図) 正しい理解: Proxomitron の声 foo|bar (<おお、この先にお望み通り "bar" があるべ。無事マッチしたお^^) 誤った理解: Proxomitron の声 foobar| (<は〜るばる来たぜ "bar" の後〜♪ でも波線部分は置換しないお^^) ~~~
- 892 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/24(月) 08:06:16 ID:gGfErR5e0]
- "foobarbaz" の "bar" だけ残そうと思って
Match = "foo(^(^bar))baz" Replace = "" とやっても、決してマッチしないのがお分かり頂けるかと思う。 ダブルネガティブ表現 "(^(^...))" は「"..." を置換せずにおく」という意味の表現ではない。 あくまで位置指定子なのである。 検索表現 "foo(^(^bar))baz" の、"foo" を (1)、"(^(^bar))" を (2)、"baz" を (3) とすると、 foo|barbaz (<部分表現 (1) がマッチしたぞ。どれどれ、更に部分表現 (2) を試してみるか…) foo|barbaz (<ここから先 "bar" が続いてる!(2) もマッチした!次は (3) を試すぞ!) foo|barbaz (<…って、後続文字列が "bar" なんだから、(3) がマッチするわけないじゃん…) foob|arbaz (<結局全体としてマッチしなかったね。とっとと次行こう、次) foobarbaz| (<どんどん行くよ〜)
|

|