266507 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

satocchiaブログ

satocchiaブログ

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

PR

キーワードサーチ

▼キーワード検索

プロフィール

satocchia

satocchia

カレンダー

お気に入りブログ

まだ登録されていません

コメント新着

effelpist@ kilovermek.es effelpist <a href="https://kilovermek.es/…
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) 初めまして、この情報最高です! 背景を白…

フリーページ

ニューストピックス

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) | コメントを書く



© Rakuten Group, Inc.