- ベストアンサー
この正規表現を教えてください。
「小説、ドキュメンタリー(社会、動物)」 のような文字列があり、括弧内の”、”だけを”/”に変換して 「小説、ドキュメンタリー(社会/動物)」 のようにする正規表現はどのようにしたらよいでしょうか。 どうかお教えくださいませ。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
use encoding 'utf8'; binmode STDOUT, ":raw:encoding(shiftjis)"; $data='「小説、ドキュメンタリー(社会、動物、生態)(数学、整数論)」'; $data =~ s/(.+?)/($wk=$&)=~tr|、|/|,$wk/ge; print $data;
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
(社会、動物、生態)→(社会/動物/生態) というような場合もあるのでしょうか? 文字コードがUTF-8という前提で use encoding 'utf8'; #binmode STDOUT, ":raw:encoding(shiftjis)"; $data='「小説、ドキュメンタリー(社会、動物)」'; $data =~ s/((.+?)、(.+?))/(\1/\2)/g; print $data;
- taseki
- ベストアンサー率66% (155/233)
文字コードがEUC-JPという前提で…。 $str = '小説、ドキュメンタリー(社会、動物)'; $ascii = '[\x00-\x7F]'; $twoBytes = '(?:[\x8E\xA1-\xFE][\xA1-\xFE])'; $threeBytes = '(?:\x8F[\xA1-\xFE][\xA1-\xFE])'; $character = "(?:$ascii|$twoBytes|$threeBytes)"; $str =~ s/\G((?:$character)*?((?:$character)*?)(?:、)((?:$character)*?))/$1/$2/g; print $str;
お礼
できました! ありがとうございました。
お礼
ありがとうございました!