- ベストアンサー
Perlの正規表現
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
/^cdde$/ で、どうでしょう。 (^は先頭を、$は末尾を現します。 つまり前後に余計な文字が付いたデータはマッチしなくなります)
その他の回答 (3)
- bgbg
- ベストアンサー率53% (94/175)
例しか示されていないので、具体的にどういう条件で置換処理をしたいのかがわかりません。 条件を例示ではなく、詳しい説明で書きましょう。 文章で説明できなければ解決不可能です。
お礼
回答ありがとうございます。 表現能力も鍛えてから出直してきます。
- koko_u_
- ベストアンサー率18% (459/2509)
>$aa =~ s/cddee/xxxx/; >$bb =~ s/cddee/xxxx/; 単なる文字列置換しか習得できていないように思われます。 多少 "正規表現" について勉強された方が良いようです。
お礼
回答ありがとうございます。 もう少し勉強して出直します。
- koko_u_
- ベストアンサー率18% (459/2509)
単純に /(cdde)[^e]/ とか /[^c](cdde)/ とか何らかの方法で aabbccddee を排除するだけではないの?
関連するQ&A
- Perl正規表現(置換)
Perlを用いてテキスト中の文字列 /^\d+$|^\d+\.[05]{1}$/ を、以下の文字列に置換したい場合、 うまくやる方法はないでしょうか? /^[0]+$|^[0]+\.[0]+$/ 正規表現を使いたいですが、 1つ1つエスケープしていくのはさすがに・・・ よろしくお願いいたします。
- ベストアンサー
- Perl
- Perl正規表現わかりますか?
下記のPerl正規表現ですが、どんな意味か分かるでしょうか? $var =~ s!/([^/]+|~(\.\.))/\.\./!/!g 参考書も読んでみたのですが分かりませんでした(セットされている文字列にどんなマッチング、置換をしているのでしょう) お分かりの方いれば、よろしくお願いします。
- ベストアンサー
- Perl
- Perlの正規表現
Perlの正規表現である文字列に文字列STRINGが含まれないようにするには ^(?!.*STRING).+$ と書くとググったら出てきました. ですが,?!について詳しいことまで書いてるサイトはありませんでした. ?!は具体的にはどのようなことをするのでしょうか?
- 締切済み
- その他(プログラミング・開発)
- Perl・正規表現が分かりません
Perlでプログラムを書く場合、 ある文字列の文字数が5文字且つ、文字列の先頭に[0-5A]を必ず含み、そして残り4文字にも[0-5A]のみを必ず含む場合、Trueを表示。 それ以外はErrを表示する。 多分、全て、正規表現でできると思うのですが、分かりません。教えていただけないでしょうか? 宜しくお願い致します。 $test = "0AAAA"; if(正規表現){ print "True"; }else{ print "Err"; } ↑結果:True $test = "aAAAA";の場合、 結果:Err
- ベストアンサー
- Perl
- 正規表現で置換
正規表現の初心者です。 テキストエディタを使って、「@:」で始まる以外の行の先頭に「//」を挿入してコメントアウトしたいのですが、正規表現がうまく書けません。 検索対象: ^[^(@:)] 置換文字列: // でいいのかなと思ったのですが、[]の中ではグルーピング用の()も文字として認識されてしまうのですね。 どのように書いたら正しく置換されるでしょうか。 どうかご教示ください。
- ベストアンサー
- その他([技術者向] コンピューター)
- Perlの正規表現
Perlの正規表現についての質問です。 例) 899 YES Alt 0 0.000 pps 2.000 pps 4.000 pps 0 2 YES Alt 0 1.222 (space)-0.100 (space)3.000(space)0 103 NO Alt 0 3.333 % 0.000 % 0.000 % 0 ^^^^^ =====抜粋======================================== if($_ = ~ / Alt+(\s+)+0+(\s+)+(\S+)+(\s+)+(\S+)+(\s+)+(\S+)+(\s+)+(\S+)+(\s+)+(\S+)+(\s+)+(\S+)+(\s+)+(\S+){ print OUT "\n$5,"; ================================================= 上記のような文字列があるとして"^^^^^"だけを抜き出したい場合の正規表現はどのようにすればよろしいのでしょうか? 考えたif文では当たり前ですが2番目の(-0.100)が抜き出せません。また、検索できた順に抜き出し、出力したいので if文を二つ書くのは避けたいです。 どなたか教示ください。 宜しくお願い致します。
- ベストアンサー
- Perl
- Perlの正規表現について
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オプションは使わないでください.
- ベストアンサー
- Perl
- Perlで使える正規表現を教えて下さい。
Perlで使える正規表現を教えて下さい。 半角英語で、小文字が3文字以上続いた後、大文字が来る場合、その大文字の右にスペースを入れる。 これをPerlで使える正規表現を教えて頂けないでしょうか? 例 $str = 'AaaAaaaBbbbbCccccDddBbA'; # Aaa Aaaa Bbbbb Ccccc DddBbA ちなみに、色々ネットで調べて試してみて、 $str =~ s/([a-z])([A-Z])/$1 $2/g; が最も近いコードになったのですが、2文字続いただけでもスペースが入り困っています。 宜しくお願い致します。
- ベストアンサー
- Perl
補足
迅速な回答ありがとうございます。非常に助かりました。 あと、もう1つ伺いたいことが! 見捨てずに回答お願い致します。 例えば以下のような場合、 $aa = "abccddeeff"; #(1) $bb = "abccddeeeff"; #(2) $aa =~ s/cddee/xxxx/; $bb =~ s/cddee/xxxx/; print $aa; print $bb; printでは、"abcxxxxff"と"abcxxxxeff"と置換され表示されます。 これを(1)の変数$aaだけ"abcxxxxff"と置換され(2)のほうは置換されずに "abccddeeeff"とさせるにはどのような正規表現だとよろしいでしょうか? (1)、(2)両方の文字列に"cddee"があるためどちらもヒットする部分が置換されてしまい困っています。