- ベストアンサー
Perlの正規表現
Perlの正規表現で質問です。 例えば、 "aabbccddee"と"cdde"という2種の文字列があるとして"cdde"だけを検索(または置換)したい場合の正規表現ってどのようにすればよいのでしょうか? いま、"cdde"で検索すると"aabbccddee"と"cdde"の2種類がヒットしてしまうのですが"cdde"だけヒットするような正規表現をどなたかご教示ください。 宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
/^cdde$/ で、どうでしょう。 (^は先頭を、$は末尾を現します。 つまり前後に余計な文字が付いたデータはマッチしなくなります)
その他の回答 (3)
- bgbg
- ベストアンサー率53% (94/175)
回答No.4
例しか示されていないので、具体的にどういう条件で置換処理をしたいのかがわかりません。 条件を例示ではなく、詳しい説明で書きましょう。 文章で説明できなければ解決不可能です。
質問者
お礼
回答ありがとうございます。 表現能力も鍛えてから出直してきます。
- koko_u_
- ベストアンサー率18% (459/2509)
回答No.3
>$aa =~ s/cddee/xxxx/; >$bb =~ s/cddee/xxxx/; 単なる文字列置換しか習得できていないように思われます。 多少 "正規表現" について勉強された方が良いようです。
質問者
お礼
回答ありがとうございます。 もう少し勉強して出直します。
- koko_u_
- ベストアンサー率18% (459/2509)
回答No.2
単純に /(cdde)[^e]/ とか /[^c](cdde)/ とか何らかの方法で aabbccddee を排除するだけではないの?
補足
迅速な回答ありがとうございます。非常に助かりました。 あと、もう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"があるためどちらもヒットする部分が置換されてしまい困っています。