satocchiaブログ

satocchiaブログ

PR

×

キーワードサーチ

▼キーワード検索

カレンダー

コメント新着

tomoZo@ Re:Pale Moon日本語化トラブル(06/06) はじめまして。 28.16.0でまたもや提供さ…
satocchia @ Re[1]:Pale Moon日本語化トラブル(06/06) zui_9さんへ 本日、確認しました。ようや…
zui_9 @ Re:Pale Moon日本語化トラブル(06/06) 上記リンク「Githubのプロジェクト」の左…
わたなべ@ Re:powershellコンソール、見づらくありませんか?(08/26) 初めまして、この情報最高です! 背景を白…
y__@ Re:uwscでGUIフォーム(05/12) UWSC 仮掲示板から飛んできました。 HTAで…
2016.04.26
XML
カテゴリ: 正規表現
知ってる人には初歩の初歩なんだろうけど、知らなかったのでメモ。

str="grandparent/parent/children/grandchildren"

てな文字列から/grandchildrenを除いたgrandparent/parent/childrenを得たいと、
str.replace(/[/].*?$/,'')
なんてやってみるとgrandparent/parent/childrenではなく
grandparent
になっちゃう。powershellでこの現象に遭遇し、javascriptとエディタの正規表現でも試したところ、結果は同じ。

量指定子とか最短一致とか非強欲とかいろいろググったけど、説明にたどりつけなかったので、自分なりに考えてみた。


正規表現エンジンの気持ちになって、/[/].*?$/を考えると


^grandparent/parent/children/grandchildren$
^grandparent /

で、 ここから最短 で末尾までをたどると、
/parent/children/grandchildren
がマッチするんじゃないかと。

つまり、正規表現の最短一致は
「文字列の先頭から比較して最短」 のマッチを行うのであって、
「前からも後ろからも見て最短」のマッチを行うほど親切じゃない。

これ、どっかにきちんとした説明ないかな。







お気に入りの記事を「いいね!」で応援しよう

最終更新日  2016.04.26 14:05:14
コメント(1) | コメントを書く


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


Re:最短一致の落とし穴(04/26)  
こいうときは

とやればよい (2017.05.12 07:45:36)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: