- 締切済み
perlでの正規表現について
文字列のなかの"<タグ>(アルファベット1文字)"すべてに対して置換処理をさせたいのですがうまく動作しません。 現在はこう記述しております。 $str=~ s/(~<(.*?)>\w)/置換文字列/g; 良い方法があれば教えていただけると助かります。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- kumoz
- ベストアンサー率64% (120/185)
うまく行かないことがあるかも知れませんが ... 。 $str =~ s|(<BR>)(\w+)|$1 . join('', map { $_ . '<wbr>' } split //, $2)|ieg;
- t-okura
- ベストアンサー率75% (253/335)
あんまり自信がないのですが、 $str =~ s/((?:<BR>)*\w)((?:<BR>)*)/$1<wbr>$2/g; ではどうでしょうか。 最低 1 文字 <BR> 以外の文字が入っているのが条件です。
- t-okura
- ベストアンサー率75% (253/335)
No.1 の回答を見落としていました。 もっとよい方法もあるかもしれませんが、 $str =~ s/(<BR>)*(\w)(<BR>)?/$1$2<wbr>$3/g; でどうでしょう。
- t-okura
- ベストアンサー率75% (253/335)
< の前に入っている ~ は、タイプミスですか。 ~ を取った $str=~ s/(<(.*?)>\w)/置換文字列/g; で、うまくいきますよ。
- Tacosan
- ベストアンサー率23% (3656/15482)
元の質問の「<タグ>」はどこに消えたんでしょうか? したいことを正確に書いてください.
補足
すみません あまり考えがまとまらないうちに投稿してしまったので質問内容が不明瞭となってしまいました 質問1の補足に本当にやりたいことを書きましたのでよろしくお願いいたします。
- moon_night
- ベストアンサー率32% (598/1831)
~がいらないのでは? $str=~ s/(<(.*?)>\w)/置換文字列/g;
補足
すみません質問を正しく書けていませんでした 今やりたいことは、"(アルファベット1文字)"すべてを"(アルファベット1文字)+<wbr>"に置き換えたいのですが、改行を<BR>に変換した文字列を検索した際に、"<<wbr>B<wbr>R<wbr>><wbr>"になってしまうからです。
補足
回答ありがとうございます。 返答遅れまして申し訳ありません。 これだと<BR>が2つ以上続いた場合に<br><b<wbr>r<wbr>>となってしまいます。 これを参考にして考えてみましたが、どれもうまくいきませんでした。 もう少しだけお知恵を貸していただけませんでしょうか。