• 締切済み

emacsの正規表現で最短一致するには

Emacs 20.7.2を使っています。 replace-regexpにて最短一致(最短マッチ)を行いたいの ですが、その表現が分かりません。 .*? を試してみましたが、最長一致となってしまいます。 FAQかもしれませんが、ウェブを探しても解答は見つけら れませんでした。是非ご教授下さい。

みんなの回答

  • notnot
  • ベストアンサー率47% (4856/10272)
回答No.1

そういう機能は無いんじゃないでしょうか? [^ ]の機能を使って、a[^b]*b とかするしかないと思います。

u-tetsu
質問者

お礼

う~むないですか。[^]で確かにできそうですが、場合によってはかなり複雑な表現になりますね。 これでやってみます。ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 正規表現内に変数を使用する方法

    match() や replace() の第1引数に文字列ではなく正規表現を使用 できますがこの正規表現内に変数を使用する場合、どうやったらよいの でしょうか。 var str = 'てすと'; alert(str.replace(/str/, 'テスト')); とすることができません。 (Perlではパターン内に変数が使用できるのですがJSでは変数が使用 できません) http://ar.aichi-u.ac.jp/blog/js-replace.html に書いてあるように第1引数に文字列を渡すと正規表現ではなくただの 文字とのマッチになってしまうようなので(確認済み)使えません。 面倒ですがリンク先にあるようにnew RegExpでRegExpオブジェクトを 作ってやる方法しかないんでしょうか。

  • 最短一致の使い方

    最短一致の使い方がよくわりません。 $str = "<div><div><p>ABC</p></div><div><p>DEF</p></div></div>"; $str =~ /<div.*?ABC.*?<\/div>/; print $&; 「<div><p>ABC</p></div>」となると考えていたのですが、 「<div><div><p>ABC</p></div>」と表示されます。 正規表現をどのようにしたら期待通りの結果を得られますでしょうか? 前半の最短一致がダメで後半の最短一致がOKという理由もできたら教えて下さい。

    • ベストアンサー
    • Perl
  • 正規表現

    正規表現に疎いので質問させてください。 $param = ereg_replace('/?$', '', $_SERVER['REQUEST_URI']); これをpreg_matchで書くとどうなりますか? よろしくお願い致します。

    • 締切済み
    • PHP
  • 正規表現について

    VB6ですが・・・ '次のようなコードがあって <!-- と --> に囲まれる文字列を抜き出したのですが 'どのようなパターンマッチを書けばいいのでしょうか? 'HTMLのコメントのみを抜き出したいと思っています。 Const s = "<!--今日-->" _ & "<!--僕は--><!--正規表現を--><!--勉強します-->" Dim x As RegExp Dim v As match Set x = New RegExp x.Pattern = "パターン" x.Global = True For Each v In x.Execute(s) Debug.Print v.Value Next

  • 正規表現について

    初歩的ですみません。 最短マッチが分かりません。 『<b>*****</b>』の一行だけマッチさせる正規表現を教えてください。 <b>*****</b> <b>*****</b> <b>*****</b> <b>*****</b>

    • ベストアンサー
    • PHP
  • 正規表現の一致について

    正規表現のパターンマッチについて、 質問させていただきます。 現在、EUC-JPでパターンマッチングしており、 文章は、全て、半角から全角から処理に変換しております。 foreach(@list){ if($file =~ /$_/){ print"$_\n"; } } 以上のように、$fileの内容に対して、@listにある項目すべてでマッチングしようとしています。 $fileは、長い文章が格納されています。 $_ が 「ローランド_ディー.ジー.」(_は、全角空白)の場合、 print"$_\n"をみると、$file中の「:ランドクルーザー」という部分の”ランド”部分のみが出力されてきました。 文章の途中に出現する単語なので、”^”や”$”等を用いての完全一致が使えずに困っています。 どのようにしたら、$file中の$_と部分的な一致ではなく完全一致(?)になるのでしょうか?

    • ベストアンサー
    • Perl
  • VBScript.RegExp正規表現での後方参照

    VBScript.RegExpを使うと、VBA でも正規表現が使えることを最近知りました。 置換は Replaceメソッドでできるようですが、例えば Perlでの s/(.)(.)/\2\1/; のような置換(後方参照?前方参照?)はどうしたらできるでしょうか?

  • 正規表現について

    初歩的な質問で申し訳ないのですが、ただいま正規表現を勉強中で 「ほげほげほにゃらら」の「ほにゃらら」以外にマッチさせるには どのように記述すればいいのでしょうか? ちなみに、「ほげほげ」は変動しますので、「(....)」のようなマッチはできません。 否定なので、「/[^ほにゃらら]/」でいけると思ったのですが、まったくマッチしませんでした。 お分かりになる方がいらっしゃいましたらご教授下さい。 よろしくお願い致します。

  • PHP 正規表現

    はじめまして^^ 現在、PHPでプログラムを作っています。 そして、文字列の置き換えをする機会があり、 正規表現をつかうことになりました!! 置き換えに使う関数は、mb_ereg_replaceです! ある条件にあった部分の文字列を置き換えしたいと思っています。 そして、いろいろとやっていきましたら、あるひとつの壁にぶつかりました。。 例えば、PHPでは、正規表現の部分を [^文字]とやると、『文』と『字』という文字列以外にマッチという意味になるらしいのですが、 『文字』という文字列以外にマッチ、というふうに、表現したい場合は、 どう表現すればよいのですか? [^(文字)]とか、その他いろいろ、 自分なりに、色々ためしたのですが、うんともすんともいいません、、 どなたか、わかる方教えて下さいm(_ _)m

    • ベストアンサー
    • PHP
  • vbaの正規表現で、マッチした一部分を抽出したい

    accessの正規表現で、マッチした部分の一部を取り出したいと思っています。 秀丸で言えば、 ------------------------ 文字列 あいうえお ↓↓↓ 正規表現 あ(.*)お 置き換え文字 \1 ↓↓↓ 抽出 いうえ ------------------------ って感じの「¥1」みたいなのがほしいと考えています。 現在、下記のような感じで、対象文字を抽出しています。 ここから、また正規表現でほしい部分を抽出しなければいけないのでしょうか? 【上の例で言えば、「あいうえお」を抽出する関数】 ------------------------ Function 抜き出し(ByVal 指定文字列 As String) As String Dim 正規表現, 一致集団, 一致要素 Set 正規表現 = CreateObject("VBScript.RegExp") 正規表現.Pattern = "購入日時[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日 [0-9]{1,2}時[0-9]{1,2}分" 正規表現.MultiLine = True Set 一致集団 = 正規表現.Execute(指定文字列) For Each 一致要素 In 一致集団 抜き出し = 一致要素.Value Exit For Next End Function ------------------------ これだと、 購入日時2012年1月25日 17時53分 がマッチします。 でもほしいのは、 2012年1月25日 17時53分 の部分だけ。 何かいい方法は無いでしょうか? よろしくお願いします。

このQ&Aのポイント
  • 子供が習いたいことをダメと言われると、言いたいだけの子供はワガママだと言える。
  • 子供が宿題を教えて欲しいと頼むのに応じない親に対して、取り乱す子供はワガママだと言える。
  • 子供が取り乱し、物に当たるのは、子供の行動と親の対応のバランスに問題があることを示している。
回答を見る