• 締切済み

perlでの正規表現について

文字列のなかの"<タグ>(アルファベット1文字)"すべてに対して置換処理をさせたいのですがうまく動作しません。 現在はこう記述しております。 $str=~ s/(~<(.*?)>\w)/置換文字列/g; 良い方法があれば教えていただけると助かります。

みんなの回答

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.6

うまく行かないことがあるかも知れませんが ... 。 $str =~ s|(<BR>)(\w+)|$1 . join('', map { $_ . '<wbr>' } split //, $2)|ieg;

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.5

あんまり自信がないのですが、 $str =~ s/((?:<BR>)*\w)((?:<BR>)*)/$1<wbr>$2/g; ではどうでしょうか。 最低 1 文字 <BR> 以外の文字が入っているのが条件です。

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.4

No.1 の回答を見落としていました。 もっとよい方法もあるかもしれませんが、 $str =~ s/(<BR>)*(\w)(<BR>)?/$1$2<wbr>$3/g; でどうでしょう。

george723
質問者

補足

回答ありがとうございます。 返答遅れまして申し訳ありません。 これだと<BR>が2つ以上続いた場合に<br><b<wbr>r<wbr>>となってしまいます。 これを参考にして考えてみましたが、どれもうまくいきませんでした。 もう少しだけお知恵を貸していただけませんでしょうか。

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.3

< の前に入っている ~ は、タイプミスですか。 ~ を取った $str=~ s/(<(.*?)>\w)/置換文字列/g; で、うまくいきますよ。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

元の質問の「<タグ>」はどこに消えたんでしょうか? したいことを正確に書いてください.

george723
質問者

補足

すみません あまり考えがまとまらないうちに投稿してしまったので質問内容が不明瞭となってしまいました 質問1の補足に本当にやりたいことを書きましたのでよろしくお願いいたします。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

~がいらないのでは? $str=~ s/(<(.*?)>\w)/置換文字列/g;

george723
質問者

補足

すみません質問を正しく書けていませんでした 今やりたいことは、"(アルファベット1文字)"すべてを"(アルファベット1文字)+<wbr>"に置き換えたいのですが、改行を<BR>に変換した文字列を検索した際に、"<<wbr>B<wbr>R<wbr>><wbr>"になってしまうからです。

関連するQ&A