- ベストアンサー
特定の文字列に""を追加する正規表現を教えてください。
特定の文字列に""を追加する正規表現を教えてください。 置換前 ID=○○○○ 置換後 ID="○○○○" とするにはどうすればよいのでしょうか? 正規表現というものを最近知ったのですが、どうしたものか全然わかりません…。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんにちは。 以下は、【タグ付き正規表現】での置換が可能なテキストエディタ等で置換を行う 場合の一例です。 注1)以下の例は、「秀丸エディタ」で置換する場合のものです。 注2)使用するアプリケーションにより、メタ文字(エスケープシーケンス)、及び、 部分正規表現(タグ付き正規表現)の文字列などが異なる場合があります。 その際は、環境に合わせて適せん変更して下さい。 注3)あくまで一例ですので、下記以外での記述方法も考えられます。 ■例1 "ID="に続く、【限定した文字列】を " で括る場合。 例えば、 置換前: ID=ABC0001 置換後: ID="ABC0001" としたい場合、 検索文字列: (ID=)(ABC0001)([ \t]|$) 置換文字列: \1"\2"\3 注)上記の検索文字列の、3番目の()カッコ内の『[』の後には、 半角スペースが1個入っています。 として置換します。 ■例2 "ID="に続く、【任意の文字列】を " で括る場合。 例えば、 置換前: ID=○○○○ 置換後: ID="○○○○" ○○○○は任意の文字列 ※任意の文字列は、 半角スペース、タブ、"(半角ダブルクォーテーション) 及び、改行文字を含まない連続した文字列 とします。 としたい場合、 検索文字列: (ID=)([^ "\t\r\n]+)([ \t]|$) 置換文字列: \1"\2"\3 注)上記の検索文字列の、2番目の()カッコ内の『[^』の後と、 3番目の()カッコ内の 『[』の後には、半角スペースが1個 入っています。 として置換します。 ※正規表現の詳細については、下記サイト等をご覧下さい。 ■参考サイト ◎秀丸エディタ公式サイト 正規表現(Ver8.00対応版) http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemaru/html/190_CmdSearch_Regular.html \1・\2 一般的正規表現互換のタグ付き正規表現(Ver8.00対応版) http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemaru/html/190_CmdSearch_Regular_PerlTag.html ◎Regular Expression http://www.sixnine.net/regexp/ ◎正規表現メモ http://www.kt.rim.or.jp/~kbk/regex/regex.html 以上です。
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
PHPの例 <? $str="ID=aaa xxx ID=bbb yyy ID=ccc"; print $str."<br>\n"; $pattern="/(?<=ID=)(.*?)(?=[\s\t]|$)/"; $replacement="\"$1\""; $str=preg_replace($pattern,$replacement,$str); print $str."<br>\n"; ?>
- kmee
- ベストアンサー率55% (1857/3366)
正規表現には「方言」があるので、どの言語やツールで使用するかが明記されないと答えようがありません。 置換方法もいろいろあるので、これも指定がないと答えようがありません。 また、置換前ですが、 ・これだけで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"/ ; ・専用関数を使う というのがあります。
- athanasius
- ベストアンサー率37% (361/964)
正規表現というのが よくわかっていないと思われます 特定の文字列に合う合わないを記述するのが正規表現 今の状態で分かるのは 置換する必要があるというだけ 置換については正規表現は関係するけど こちらは言語によって異なるので回答しようにもできない 正規表現自体も実装によって違います