• ベストアンサー

特定の文字列に""を追加する正規表現を教えてください。

kmeeの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

正規表現には「方言」があるので、どの言語やツールで使用するかが明記されないと答えようがありません。 置換方法もいろいろあるので、これも指定がないと答えようがありません。 また、置換前ですが、 ・これだけで1行なのか、ある行の一部なのか。一部なら、IDは複数あるのか、それを全部置き換えるのか ・IDの部分にはどんな文字列が入るのか 英数字だけ、とか、日本語も入る、とか、空白も入る、とか 必ず「ID」なのか、可変なのか ・○○○○のどんな文字列が入るのか (以下同じ) ・書式はどうなっているのか =の前後のに空白が入ることもあるのか 区切りを示すような文字(C言語でのセミコロン、とか)が入るのか コメント文が付く場合があるのかどうか といったことで、どのような正規表現にすればよいかが変わってきます。対応を間違えれば、置換したいものを置換しなかったり、置換してはいけないもの置換したり、といったことが起ります。 ・これだけの行 ・ID= だけ ・○○○○は任意 ・前後等に空白、コメントといったよけいな文字は無い ・テキストエディタの置換ダイアログで、検索と置換の2つの欄に入力する と仮定して、次のような形になるでしょう 検索: ^(ID=)(.*) 置換: \1"\2" ^:先頭/行頭を表わすメタ文字 ():正規表現をグロープ化する。いろんな用途があるが、今回は後で引用するために使う。 .:任意の文字にマッチするメタ文字 *:直前の表現の0個以上の繰り返し。今回は .(任意の文字)の繰り返し \1,\2: 検索での()の内容。順番に番号が振られる。(ID=)にマッチしたものが\1、(.*)にマッチしたものが\2になる。 方言がある、というのは、例えば ・(): sedでの標準は\(\)と\を付けなければならない。\無しだと、「括弧のマッチする」という普通の表現。 ・\1,\2: Perl等では $1,$2 となる というようなことです。また、ある体系での表現が別の体系に対応していない、というときもあります。 置換方法の違いは、例えば ・テキストエディタで、置換ダイアログの検索と置換に入れる。正規表現を使うを有効にする ・Perl、Sed等、専用のコマンドがある:perlなら s/^(ID=)(.*)/$1"$2"/ ; ・専用関数を使う というのがあります。

関連するQ&A

  • 正規表現:囲われた文字列の置換

    シングルクオーテーションで囲われた文字列のシングルクオーテーションの前に文字を追加するように、正規表現を用いて置換しようと考えています。 全角文字は[^\x01-\x7E]で検索できるのはわかったのですが、シングルクオーテーションで囲われて、全角文字を含む場合という表現ができません。 下記のような、文字列を対象としています。置換をするのは、全角文字を含む文字列のみです。  全角文字のみ  半角文字のみ  全角半角文字両方 下記ののように置換したいです。 置換前: '全角文字や半角文字','testです','test'.'テスト'.'てすとtest','123' 置換後: A'全角文字や半角文字',A'testです','test'.A'テスト'.A'てすとtest','123' よろしくお願いします。

  • 正規表現で特定文字列を含まない行を削除したいのですが

    テキストエディタ mi で正規表現のより「※補足」という文字列を含む行だけ残して他の行を削除しようとしています。 具体的には、 検索文字列 ^(?!.*\※補足).*$ 置換文字列            ← 空白 としてやっているんですが、例えば   なんとかかんとかで何やらが何として…   ※補足:よくわかりません   ※補足:質問します というテキストを上の方法で全置換すると何も起きません。 そこで試しに 検索文字列 ^(?!.*\※補足).*$ 置換文字列 ----- としてみました。 この場合、本当なら   -----   ※補足:よくわかりません   -----   ※補足:質問します となることを期待していたのですが、実際は   -----なんとかかんとかで何やらが何として…   ※補足:よくわかりません   -----   ※補足:質問します となってしまい、要するに「※補足」という文字列が含まれない行は正しく見つけてくれるものの、含まれていない行については、その行丸ごとを置き換えるのではなく行頭に置換文字列を付加するだけになってしまいます。 これは、何がどう悪いのでしょうか? ちなみに、こちらのサイトで「テキストで特定の文字列を含む行を削除」とQ&Aを検索すると、私の場合で言えば「^.*※補足.*\n」→「」(空白)という置換えで可能というご回答が見つかるのですが、miの場合、これでは「※補足」という文字列が含まている行も含まれていない行も見つけてくれませんでした。 どう直せば目的が達成されるか教えて頂けないでしょうか? どうかよろしくお願い致します。

    • ベストアンサー
    • Mac
  • 特定文字列を含まない行を削除

    以前特定文字列を含む行を削除する方法の質問をし、正規表現を置換することでできることを知りました。^.*特定の文字列.*\n 今度は特定文字列を含まない行を削除を削除したいです。 この場合どう記述すればいいでしょうか? また、特定文字列1と特定文字列2のどちらかを含まない行を削除する方法もあわせて知りたいです。

  • 文字AAとBBではさまれた不特定の文字列○○をCCに置換するには。

    正規表現での置換ができるエディタで次のように置換したいのですがどうやったらできるのでしょうか? 文字列○○は不特定の長さです。 正規表現のページを調べてみましたが希望通りに置換ができないので、適切な書き方を教えていただけませんでしょうか。よろしくお願いします。 検索:category/img/○○○○_c 置換:category/img/<$MTEntryExcerpt$>_c

  • 正規表現を使って文字列置換を行いたい

    みなさんいつもお世話になります。 とあるプログラムの置換処理を行いたいのですが、 <a href="JavaScript:prfCallList(2,'27','27125','大阪市住之江区','')"> ↑の文字列の 「2,'27','27125','大阪市住之江区',''」 の部分(つまりprfCallList関数のパラメータ) が可変な文字列をいっきに <a href="shopmapItiran2.htm"> と変えたい時ってどのような正規表現になるのでしょうか? 私は正規表現を使うと楽らしいよってのは知ってるけど使った事がない・・・というレベルです。 ネットで一応正規表現入門みたいなサイトも読んでみたのですがよくわからず(T_T) お手数をおかけしますが、よろしくお願いします。

  • 正規表現置換を使った文字の追加

    正規表現置換を使った文字の追加 エクセル2007でcsvファイルを開き、htmlタグが記載されたデータの一部に文字を追加したいと思ってます。 ●検索する値 <p class='test'>*</p> ●置き換え後 <p class='test'>*</p><!--end test--> *は全角文字、英数字、htmlタグなどが入り交じります。 *の部分は変更せず、「<p class='test'>」から始まるhtmlタグの「</p>」の後ろに「<!--end test-->」を追加したいだけなんですが、どのようにすればいいのでしょうか。 エクセルには正規表現検索のアドインをインストールしてるので、正規表現を利用することができる状態です。 よろしくお願いいたします。

  • 正規表現で特定文字に挟まれた範囲内での検索

    VS CODE にて文字列の正規表現で文字列(プログラムではありません)の検索をしたく質問いたします。 (A B C)<A B C> という文字列があり、この中の半角スペースを別の文字に置換したいのですが、全ての空白ではなく( )に挟まれた中の半角スペースだけを検索したいと思っています。 ↑の用な文字列から( )内の半角スペースだけを照らし出す正規表現を教えていただいていただけると嬉しいです。

  • ''で囲まれていない文字列にマッチする正規表現

    下記のような文字列($str)に対して置換を行い、 my $str = qq{ AAA = BBB - 'CCC' }; $str =~ s/★正規表現★/sprintf("DDD(%s)",$1)/xmsge ; 変換後 $str = DDD(AAA) = DDD(BBB) - 'CCC' ; を実現する★正規表現★を書きたいと思っています。  ・AAA,BBB,CCCは[\w]で構成される文字列です。 ですが、シングルクォーテーション('')で囲まれていない文字列にマッチする正規表現が書けなく困っています。 一度、シングルクォーテーションで囲まれているものも含めて全てDDD()をつけて、そのあとで、シングルクォーテーションを含むものは元に戻すことでやりたいことは実現できているのですが、1行で実現できる方法を探しています。 アドバイスよろしくお願いします。

    • ベストアンサー
    • Perl
  • 正規表現でエスケープ文字の置換

    正規表現でエスケープ文字(&nbsp;等)を別の文字列に置換しようと思い、「/&.+;/」というパターンを作成したのですが、エスケープ文字が連続する場合(&nbsp;&lt;)1文字に置換されてしまいます。 正規表現をご存知の方、ご教授ください。

  • 正規表現について

    正規表現について 特定文字列の前にある文字列があった場合、はじくようにしたいのですが、 どのように記述すればよいでしょうか。 例えば、さしすせそ の前に かきくけこ があった場合のみはじきたいです。 ○ かきくけこ ○ かきくけこあいうえお × かきくけこさしすせそ × あいうえおかきくけこさしすせそ ○ あいうえおさしすせそ ○ さしすせそ よろしくお願いします。

    • ベストアンサー
    • PHP