![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?e8efa67)
Perlの正規表現について質問です.
■質問
aaa bbb
aaa bbb ccc "ddd"
aaa bbb ccc "ddd eee"
aaa bbb ccc ddd eee "fff ggg hhh iii"
というような,文字列が書かれているファイルがあるとします.
※ダブルクォーテーションが無い行もあります.
※ダブルクォーテーション内のスペースの数は,行によってそれぞれ異なります.
これを,ダブルクォーテーションの中にあるスペースだけ
アンダーバーに置換する場合の正規表現を教えて下さい.
つまり,下記の出力にしたいです.
aaa bbb
aaa bbb ccc "ddd"
aaa bbb ccc "ddd_eee"
aaa bbb ccc ddd eee "fff_ggg_hhh_iii"
■条件
※ちょっと古いPerlでも動くよう,ゼロ幅肯定/否定後読((?<),(!<))は使わないでください.
※単に実現するだけなら,
# cat inputfile | print -pe 'sub f(){}(shift;s/ /_/;return $_;); s/(\".*\")/&f($1)/e;'
みたいな感じで置換できそうですが,「正規表現だけで簡単に書けるかどうか」が知りたいのです(正規表現だけで実現出来る場合,そのアルゴリズムを知りたいです).そのため,関数と/eオプションは使わないでください.
No.1ベストアンサー
- 回答日時:
正規表現「のみ」では困難で、私なら、
#! perl -p
1 while (s/(\"[^" ]+) ([^"]+\")/$1_$2/);
ぐらいで妥協します。
ダブルクォーテーションに囲まれた文字列が1行に0~1個まで、
すなわち、以下のような行がないなら、もう少し簡略化できるでしょう。
aaa bbb ccc ddd eee "fff ggg hhh iii" "jjj kkk"
No.2
- 回答日時:
ん~, 私も #1 と同じく「正規表現だけ」で書けるとはあんまり思えない (よしんば書けたとしても「簡単」にはならないと思う) けど....
あと, 「ちょっと古いPerl」ってどの辺を想定してます? 個人的には 5.8 より前は無視したいん.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- JavaScript JavaScript|特定URLだった時、特定の要素を変更するコードの書き方を教えてほしいです 2 2023/08/25 21:43
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
ファイルをディレクトリ分配の...
-
openした後、closeしないでプロ...
-
perlのプログラミング 部分入れ...
-
Perlのエラーについてご教授く...
-
画像が表示でnull; this.src
-
perlプログラミング 空白行削除
-
Perlで特定文字列から特定文字...
-
ラズベリーパイ初心者です。 ラ...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
openした後、closeしないでプロ...
-
テキストファイルで提出とは?
-
INDIRECT 横に再度抽出したい
-
Perlで特定文字列から特定文字...
-
perlをバージョンアップしたら...
-
Wallpaper Engineでおすすめの...
-
arduino の割り込み処理について
-
アルファベットに付いて質問し...
-
Strawberry Perl for Windows ...
-
Perlで時間の計算
-
このファイルを開く方法で困っ...
-
TeraPadエディターの操作方法に...
-
cgiでサーバーにファイルを追加...
-
フローチャート 九九
-
LinuxにおいてのPerlのプログラ...
-
perl 初等プログラミングについて
-
Perlのエラーについてご教授く...
-
こんにちは ブラケッツでプログ...
-
bashスクリプト
-
perlプログラミング 空白行削除
おすすめ情報